apache maven

  • Maven 拥有约定,因为你遵循了约定,它已经知道你的源代码在src/main/java,配置文件放在/src/main/resource。它把字节码放到 target/classes ,然后在 target 生成一个 JAR 文件。
  • Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。
  • Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个 JAR 文件这样的工作。
  • Maven假设父POM在本地仓库中可用,或者在当前项目的父目录( ../pom.xml ) 中可用,如果两个位置都不可用,默认行为还可以通过 relativePath 元素被覆盖
maven优化
  1. [依赖优化]将所有依赖的版本统一由父项目管理< dependencyManagement>
  2. [插件优化]将所有依赖插件的版本统一由父项目管理< properties>
pom.xml(project object model)
POM包含了四类描述和配置:
    1. 项目总体信息:它包含了一个项目的名称,项目的URL,发起组织,以及项目的开发者贡献者列表和许可证。
    2. 构建设置:在这一部分,我们自定义Maven构建的默认行为。我们可以更改源码和测试代码的位置,可以添加新的插件,可以将插件目标绑定到生命周期,我们还可以自定义站点生成参数。
    3. 构建环境:构建环境包含了一些能在不同使用环境中 激活的profile。例如,在开发过程中你可能会想要将应用部署到一个而开发服务器上,而在产品环境中你会需要将应用部署到产品服务器上。构建环境为特定的环境定制了构建设置,通常它还会由 ~/.m2中的自定义 settings.xml 补充。
    4. POM关系:一个项目很少孤立存在;它会依赖于其它项目,可能从父项目继承POM设置,它要定义自身的坐标,可能还会包含子模块。
依赖范围
可选依赖:编译这个项目的时候你需要两个依赖类库,但是你不希望在使用你类库的项目中,这两个依赖类库同时作为传递性运行时依赖出现。依赖声明为可选之后,不再向子项目传递依赖,如果子项目也需要此依赖,子项目需要自己显式声明.
< dependency>
  < groupId>net.sf.ehcache</groupId >
  < artifactId>ehcache</artifactId >
  < version>1.4.1</version>
  < optional>true</optional>
< /dependency>

 构建生命周期

清理生命周期clean:Clean插件的clean目标( clean:clean)被绑定到清理生命周期中的 clean 阶段。目标clean:clean 通过删除构建目录删除整个构建的输出
自定义clean插件的行为:
< project>
  < modelVersion>4.0.0</modelVersion >
  ...
  < build>
    < plugins>
      < plugin>
        < artifactId>maven-clean-plugin</artifactId >
        < configuration>
          < filesets>
            < fileset>
              < directory>target-other</directory >
              < includes>
                 < include>*.class</include>
              < /includes>
            < /fileset>
          < /filesets>
        < /configuration>
      < /plugin>
    < /plugins>
  < /build>
< /project>

 默认生命周期 (default):大部分Maven用户将会对默认生命周期十分熟悉。它是一个软件应用程序构建过程的总体模型。第一个阶段是 validate ,最后一个阶段是 deploy。

 
生命周期阶段
描述
validate
验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources
生成所有需要包含在编译过程中的源代码
process-sources
处理源代码,比如过滤一些值
generate-resources
生成所有需要包含在打包过程中的资源文件
process-resources 
复制并处理资源文件至目标目录,准备打包
compile
编译项目的源代码
process-classes
后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)
generate-test-sources
生成所有包含在测试编译过程中的测试源码
process-test-sources
处理测试源码,比如过滤一些值
generate-test-resources
生成测试需要的资源文件
process-test-resources
复制并处理测试资源文件至测试目标目录
test-compile
编译测试源码至测试目标目录
test
使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
prepare-package
在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现)
package
将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR
pre-integration-test
执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
integration-test
如果有必要的话,处理包并发布至集成测试可以运行的环境
post-integration-test
执行一些在集成测试运行之后需要的动作。如清理集成测试环境。
verify
执行所有检查,验证包是有效的,符合质量规范
install
安装包至本地仓库,以备本地的其它项目作为依赖使用
deploy
复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)
站点生命周期 (site):aven不仅仅能从一个项目构建软件构件,它还能为一个或者一组项目生成项目文档和报告。项目文档和站点生成有一个专有的生命周期
mvn site

 在 target/site 目录找到一个 index.html 文件,这个文件链接了 JavaDoc 和一些关于源代码的报告

mvn site:run

 

http://localhost:8080/

mvn deploy命令

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.myhome</groupId>
  <artifactId>maven</artifactId>
  <version>0.0.1</version>
  <packaging>jar</packaging>

  <distributionManagement>
        <repository>
            <id>thirdparty</id>
            <url>http://10.90.0.42:8081/nexus/content/repositories/thirdparty/</url>
        </repository>       
  </distributionManagement>

</project>

 

settings.xml

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

 

运行命令:

mvn deploy

 

如果在pom.xml文件中不指定发布仓库,在mvn命令中要指定发布相关参数

mvn deploy:deploy-file -Durl=http://10.90.0.42:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty -Dversion=0.0.1 
-Dfile=C:\Users\pc\Desktop\maven\target\maven-0.0.1-SNAPSHOT.jar -DpomFile=pom.xml

 

注意:
1.发布仓库必须是hosted类型的仓库
2.发布的版本必须和发布仓库的政策相对应(例如<version>0.0.1-SNAPSHOT</version>是无法发布到release仓库中的,可以将SNAPSHOT删掉,或者发布到Snapshots仓库中)

maven的配置
1.maven的默认配置
默认配置也是全局配置,是apache maven级别的配置
在MAVEN_HOME下的配置文件: MAVEN_HOME/conf/settings.xml 是maven 全局的配置。如果不对其修改的话,默认本地仓库的路径就是:当前用户路径 C:\Users\[UserName]\.m2
2.用户配置
用户配置是与仓库同级目录下的配置文件settings.xml
1、在你想保存仓库的位置创建一个目录作为仓库目录。例如在d:盘创建一个MavenRepository目录
2、在其中创建一个名为“repository”的目录。
3、修改MAVEN_HOME\conf\settings.xml
        4、从MAVEN_HOME\conf中把settings.xml复制到MavenRepository目录。

 

3.注意:
用户级别的仓库在全局配置中一旦设置,全局配置将不再生效,转用用户所设置的仓库,否则使用默认路径仓库(先在默认的全局配置文件中找配置仓库,在配置仓库中如果有用户配置,用户配置优先生效,否则用全局配置)
 

 

posted @ 2016-08-14 11:47  woms  阅读(262)  评论(0编辑  收藏  举报