5分钟学maven

maven能给你带来什么? 

这段话属转贴)学会使用 maven2 了,那么一切就变得简单起来了,一行命令 mvn deploy ,或者一个 ant task ,就让所有的事情都完成了。如果你想查看项目的进度,如果你想发布一个用户站点,那么 mvn site 可以很好的帮助你。然而 更为方便的是,你不要到处去寻找那些类库了,到处的复制,粘贴,有时候还得为一个 jar 包的不同版本冲突忙上半天。有了 maven ,就有了统一的开发库,所有的 jar 都统一管理。 不用再担心了。
    maven2
带来的不仅是方便, 对于整个项目的监控也是不错的。有了统一的入口,加上完善的 report 组件,可以清晰地看到项目的所有进展。再加上 continuum 的持续整合,能减少很多成本
安装
1.  Download and extract latest version maven zip
2.  Set JAVA_HOME
3.  Set M2_HOME and add %M2_HOME%/bin to “path”
4.  Run command “mvn --version” in dos
 
 
第一个maven 命令
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
 
该命令是执行 archetype:create。其中前缀(prefix) archetype”称之为maven plugin。而create”称之为 maven goal。所以该命令就是执行archetype plugin中的create goal
 
Maven goal 类似于ant task ,而plugin 就是多个goal 的集合(collection of goals)。在 maven web site repository 里存放着各种各样的plugin,例如“ jboss-maven-plugin”就是一个包含很多用来处理各种各样的操作的goal的集合。
 
当你执行的mvn 命令第一次用到某个plugin 时,就会自动download 它到local repository
 
 
上面的命令执行之后,生成的东东的结构为:
my-app
|-- pom.xml
`-- src
    |-- main
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java
 
The POM
pom.xml maven 最核心的project's configuration file ,就像是Ant build.xml。上面的命令生成的project's POM为:
<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.mycompany.app</groupId>
 <artifactId>my-app</artifactId>
 <packaging>jar</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>Maven Quick Start Archetype</name>
 <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
 </dependencies>
</project>
 
第二个maven 命令 cd my-app first
mvn package
 
该命令要执行的操作就是把 project 打包成 jar
 
我们发现该命令和第一个要执行的命令( archetype:create)有所不同,第一个要执行的命令的格式是“plugin:goal”,而这第二个要执行的命令则只是一个单字。
 
Maven 对单字命令不称为goal ,而称为phase
 
Phase maven build lifecycle 的其中一个step build lifecycle 是由多个有执行顺序的phases (ordered sequence of phases) 组成的
 
当你执行一个phase 命令时,maven 就会执行顺序排在该phase 之前的所有phases ,然后再执行该phase 例如,如果我们执行“ compile” phase,那么maven实际要执行的phases依次为:
  1. validate
  2. generate-sources
  3. process-sources
  4. generate-resources
  5. process-resources
  6. compile
在执行了第二个命令之后,我们通过运行java来测试:
java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App
 
你就会看到输出结果为:
Hello World!
 
Maven Phases
default lifecycle里,包含下列最常用被执行的phases:
  • validate : validate the project is correct and all necessary information is available
  • compile : compile all java files in project
  • test : 使用unit test framework来test the compiled source code。这些test class不会被packaged and deployed。
  • package : 把compiled code打包成你需要的格式,如JAR.
  • integration-test : 把已经打包的东东(如jardeploy到运行环境内,用于集成测试
  • verify : run any checks to verify the package is valid and meets quality criteria
  • install : install the package into the local repository, 这样做的目的是作为其他projects的一个local dependency
  • deploy : 该phase会copy final packageremote repository for sharing。This phase is done in an integration or release environment。
另外还有3个很常用的、但不属于default lifecycle的phase:
  • clean : cleans up artifacts created by prior builds
  • site : generates site documentation for this project
  • eclipse:eclipse : 创建相关的eclipse ide文件  
每个LifeCycle phase实质上都会绑定到某个plugin:goal上!!例如命令
mvn compile
实际上等价于
            mvn compiler:compile
即执行compile phase命令=执行compiler plugin的compile goal
 
但有一个很关键的知识点: pom.xml的<packaging>的值不同,会影响lifecycle phase与哪个plugin:goal的绑定。例如:
如果是
<packaging>jar</packaging>
那么
package phase绑定到jar:jar
            mvn package = mvn jar:jar
           
如果是
<packaging>war</packaging>
那么
package phase绑定到war:war
            mvn package = mvn war:war
 
注意:phases and goals 可以按顺序一起执行。如:
mvn clean dependency:copy-dependencies package
该命令将clean project,然后copy dependencies, 最后执行package phase。
Generating the Site
mvn site
执行该phase会根据project的pom.xml来生成一个site。你可以在target/site目录下看到该命令生成的东东
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值