`

maven Maven使用

 
阅读更多

Maven使用(以新游戏大厅为例)

命名:

<groupId>cn.onlinepc.项目组</groupId>
<artifactId>项目名称</artifactId>
<version>版本</vernsion>

添加依赖:
所谓依赖就是开始时候所需要的包

	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-web</artifactId>
	  <version>3.0.6.RELEASE</version>
	</dependency>

添加中心库: 所谓中心库就是包存放的地方或者是代理的地方

	<repository>
	    <id>gamehall</id>
	    <name>Repository hosting the gamehall</name>
	    <url>http://192.168.75.11:8080/nexus-webapp-1.9.2.3/content/groups/public</url>
	    <releases>
		<enabled>true</enabled>
		<updatePolicy>never</updatePolicy>
		<checksumPolicy>warn</checksumPolicy>
	    </releases>
	    <snapshots>
		<enabled>false</enabled>
	    </snapshots>
	    <layout>default</layout>
	</repository>

添加依赖包时,只需要添加你所需要的那个依赖包就可以了,这个依赖包的相关依赖可以不用加,maven默认会自动帮我们加好


添加自己依赖包时,可以上传到本地仓库,也可以上传到nexus,下面是一个例子

mvn install:install-file -Dfile=fckeditor-java-core-2.6.jar -DgroupId=fckeditor-java-core 
-DartifactId=fckeditor-core -Dversion=2.6 -Dpackaging=jar -DgeneratePom=true

当然nexus提供界面操作上传
maven上传到nexus

 mvn deploy:deploy-file -DgroupId=org.apache.hadoop  -DartifactId=hbase -Dversion=1.0 
-Dpackaging=jar -Dfile=[path to file] -Durl=[url] -DrepositoryId=[id]

公司内部需要走代理访问外部的,所以在设置的时候也要加上代理 修改setting.xml文件

    <proxy>
      <id>onlinepc</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>192.168.11.254</host>
      <port>8080</port>
    </proxy>

当然一些模块化的结构管理,不同开发环境的设置和插件的使用等等都可以参考Maven的官方网站 http://maven.apache.org/

pom文件

Maven基本所有工作都是对pom.xml文件来进行操作的


  <repositories>
    <repository>
      <releases>
        <enabled>false</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
      </snapshots>
      <id>codehausSnapshots</id>
      <name>Codehaus Snapshots</name>
      <url>http://snapshots.maven.codehaus.org/maven2</url>
      <layout>default</layout>
    </repository>
  </repositories>
  • enabled表示这两个版本是否可用,snapshots是快照版,开发过程中经常使用。releases是发布版,部署上线的时候用
  • updatePolicy 提示这个仓库的依赖包是否有更新的
  • checksumPolicy 校验需要
  • url是远程库的地址

在游戏大厅2里面使用nexus来代理,作为公司内部使用的仓库中心。


<distributionManagement>
 <downloadUrl></downloadUrl>
<repository></repository>
 <site></site>
</distributionManagement>
  • distributionManagement部署管理
  • downloadUrl提供别人下载你项目的url
  • repository项目部署的地方
  • site项目文文档部署的地方(游戏大厅使用这样来部署文档的,采用ftp方式上传)

这样就很好的控制项目的部署,当然有很多种方式可以处理这样的问题,可以写一个插件处理,也可以结合hudson使用脚本处理(游戏大厅暂时使用这种方式来处理)。


 <build>
    <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
    <scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>
    <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
    <outputDirectory>${basedir}/target/classes</outputDirectory>
    <testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
    ...
  </build>

观察这些都是输出路径,但是一般我们会按照maven的规范来做。


<properties>
    <spring.version>2.5.6</spring.version>
</properties>
  • 对于一些像spring的多个包的,我们需要保存版本一致,可以加上properties
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
        </dependency>
    
  • 依赖版本可以写属性读取的方式

把spring抽离出来,单独作为一个项目来处理,写一个新的pom

<project>
<modelVersion>4.0.0</modelVersion>
  <groupId>cn.onlinepc.commons</groupId>
  <artifactId>spring-dependencies-module</artifactId>
  <packaging>pom</packaging>
  <properties>
    <spring.version>2.5.6</spring.version>
    </properties>
  <version>${spring.version}</version>
  
    <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>		

		        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>		
    </dependencies>
</project>

运行mvn install 弄好到本地,或者上传到私服

   <properties>
    <springversion>2.5.6</springversion>
   </properties>
    <dependencies>
      ......
     <dependency>
      <groupId>cn.onlinepc.commons</groupId>
      <artifactId>spring-dependencies-module</artifactId>
      <type>pom</type>
      <version>${springversion}</version>
     </dependency>
     ........
    </dependencies>

引入到项目里面就可以了,同样可以使用在不同应用之间的一些client包的调用



项目上传到nexus上,pom.xml配置

  <distributionManagement>
      <repository>
	  <id>snapshots</id>
	  <name>pcgroup repository</name>
	  <url>http://192.168.75.11:8080/nexus-webapp-1.9.2.3/content/repositories/snapshots/</url>
      </repository>
  </distributionManagement>

setting.xml配置

    <servers>
	<server>
		<id>snapshots</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
    </servers>

pom.xml与setting.xml的id要匹配,提供上传授权用的
maven命令

mvn clean package deploy

下载依赖包的源码


1. 使用maven命令:mvn dependency:sources 下载依赖包的源代码。
2. 使用参数: -DdownloadSources=true 下载源代码jar。 -DdownloadJavadocs=true 下载javadoc包。
mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true

游戏大厅Maven使用总结

  • 在游戏大厅项目中,我们更多的是使用Maven来进行项目的构建。
  • 我们按照Maven的规范来进行项目开发,很方便地就可以构建了,只需要添加项目中使用到的一些依赖包就可以了。
  • 搭建了nexus,项目构建速度也提高了很多。公司内部一些jar包也放到nexus里管理,svn就只存在代码了,可以省不少空间。
  • 为Hudson持续集成提供了构建功能,Ant也可以构建,但是没有规范和依赖包的管理。
  • 生成项目报告和测试报告,maven里面sonar这个插件可以输出更多的报告(项目存在的问题,风格规范,代码耦合问题,复杂度问题,测试报告问题)
  • Maven在服务器安装的时候需要依赖jdk,一般设置JAVA_HOME就可以了。
  • 结合eclipse开发时,好像少了自动生成功能,每次写完java类和jsp时都需要mvn package一下,才能通过resin访问修改后的内容,netbeans的话会好一点,只是java类需要package。
  • 使用eclipse可能会出现,jdk 1.4 版本以上的问题,这里就需要设置eclipse.ini来解决。设置jdk的路径

使用中的一些优点

  • maven当多个项目在一起工作的时候是比较有用的,只要把项目上传了,就可以提供给别的项目进行依赖。也不用手动地替换jar包,只需要在项目pom文件里面进行修改版本号就可以了
  • lib里的jar包再也不用放在svn上了,我们可以统一管理
  • 对版本号一目了然
  • 对于依赖包可以自动下载和更新,这样我们就省了找依赖包的时间了
  • 提供的功能也是比较多的,像打包功能,一般我们用ide进行打包,但是通常静态文件像js,css,img等是分开打包的,这样可以利用maven的打包插件进行自定义打包,同样能够打项目里独立的client包
  • 提供源码就可以进行部署了(公司的情况不一样)
  • 能够分析项目的一些情况,例如项目复杂度,耦合度和存在的一些风险等等。提供各种文档,如项目api和测试报告等等(sonar插件已经把这些功能整合得很好)

使用中的一些缺点

  • 对于初学者来说,学习曲线较陡,不易理解
  • 结合公司情况,更新jar包会出现这样的一个情况,就是更具依赖包版本的不同,我们更新系统就不能覆盖原来的jar包,这样只能让网络的同时帮忙删除,带来更新时候的麻烦(itbbs和bbs6.5更新同一样东西时的问题)
  • 暂时不能结合ide环境所改即所得,就是在ide修改代码后,需要build一下才能进行页面上的代码更新,这一点会影响开发效率,(netbeans支持jsp文件所改即所得,eclipse好像不支持)
分享到:
评论

相关推荐

    使用Maven导入Maven工程的视频教程

    使用Maven导入Maven工程的视频教程 仅供学习交流! 后续会持续分享相关资源,记得关注哦! 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入...

    maven使用文档,maven使用文档

    ### Maven 使用文档详解 #### Maven 简介与特点 Maven 是一款强大的项目管理和构建工具,主要用于 Java 项目的管理。Maven 提供了统一的标准流程来管理项目的生命周期、依赖关系以及项目信息等,极大地提高了开发...

    maven安装文件

    Maven使用`pom.xml`文件来定义项目配置。新建一个Java项目,创建`pom.xml`,添加项目依赖。然后在项目根目录下运行`mvn clean install`,Maven会自动下载依赖、编译代码、打包JAR,并将其存入本地仓库。 ### 七、...

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    2. **坐标**: Maven使用一组唯一的标识来定位项目,包括groupId、artifactId和version,这三者共同构成了一个项目的坐标。 3. **依赖管理**: Maven通过POM自动管理项目的依赖关系,可以避免jar地狱问题,减少手动...

    Maven使用tomcat8-maven-plugin插件.docx

    Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。 Tomcat 是一个流行的 Web 服务器,Maven 提供了一个插件 tomcat8-maven-...

    maven详细使用教程

    maven详细使用教程 maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理。maven的主要作用是解决项目中存在的问题,如多个项目之间的依赖关系、测试方法的执行和仓库的管理等。 maven的...

    idea+maven使用教程

    **Idea + Maven 使用教程** 本教程旨在帮助初学者了解并掌握如何在 IntelliJ IDEA (简称Idea) 中集成和使用 Maven。Idea 是一款强大的Java集成开发环境,而 Maven 则是一个项目管理和综合工具,它简化了构建、依赖...

    idea使用maven创建web项目详细教程

    IDEA 使用 Maven 创建 Web 项目详细教程 本教程将指导您使用 IDEA 创建一个 Maven Web 项目,从安装 Maven 到配置 Maven 环境、创建 Maven 工程、pom.xml 文件配置、依赖管理等。 1. 安装 Maven 在 IDEA 中使用 ...

    maven之开源中国Maven库

    【标题】"maven之开源中国Maven库" 指的是使用 Maven,一个流行的Java项目管理和集成工具,与开源中国的Maven仓库进行交互。开源中国Maven库是中国的一个开源软件资源平台,提供了大量的开源Java库,使得开发者可以...

    maven搭建使用详解

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理...由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

    maven安装与使用

    - **仓库**:Maven使用仓库来存储和管理构件。本地仓库存储本地开发过程中使用的构件,而中央仓库则包含了大量公共可用的构件。 - **依赖管理**:Maven通过依赖管理系统自动解析和下载项目所需的第三方库。 - **中央...

    java视频教程之SVN Maven搭建自动化构建教程 Eclipse中使用Maven

    java视频教程之SVN Maven搭建自动化构建教程 Eclipse中使用Maven视频教程云盘下载链接

    Windoiws的maven3.8.8

    默认情况下,Maven使用`conf/settings.xml`文件进行配置。在这个文件中,你可以设置本地仓库的位置、远程仓库的URL等。例如,如果你希望将本地仓库改为`D:\Maven\repository`,则需要修改`settings.xml`中的`...

    maven使用入门

    ### Maven使用入门知识点详解 #### 一、Maven概述 **1.1 什么是Maven** Maven是一款用于Java项目的自动化构建工具,它的主要目的是帮助开发者简化构建过程,提高项目管理和构建的效率。通过Maven,可以实现项目的...

    apache-maven-3.6.0_apache-maven-3.6.0_maven压缩包_maven3.6.0下载_

    Maven使用约定优于配置的原则,意味着默认的构建过程和目录结构是预定义的,这极大地简化了项目管理工作。 在开发过程中,`mvn install`命令会编译源代码,运行测试,并将结果部署到本地仓库,使得其他项目可以通过...

    使用eclipse构建maven

    在Java开发领域,Maven是一个广泛使用的项目管理和构建自动化工具,它简化了依赖管理和构建流程。Eclipse作为流行的Java集成开发环境(IDE),通过集成Maven插件m2eclipse,使得开发者可以在Eclipse内部方便地管理...

    开源工具Maven3.9.4版本压缩包

    Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...

    apache-maven-3.6.2_maven_

    在test阶段,Maven使用JUnit等测试框架运行项目中的单元测试;在package阶段,编译后的代码被打包成JAR、WAR或EAR等格式。 此外,Maven的插件系统非常强大,可以通过安装各种插件来扩展其功能,例如生成Javadoc,...

    maven.rar apache-maven-3.5.4

    描述中的“maven.rar apache-maven-3.5.4”再次确认了这是与Maven 3.5.4相关的压缩文件,可能是用户下载以在本地环境中安装和使用Maven。 标签“maven”明确了讨论的主题,即Apache Maven,它是Java开发领域的重要...

Global site tag (gtag.js) - Google Analytics