如何打包jar并发布到本地资源库上?
执行如下命令可以直接创建一个jar
mvn package
看一下pom文件你可以注意到packaging元素的值已经设置成jar,这也就是为什么maven执行上述命令可以创建jar文件(关于这个后面还会说更多)。现在到${basedir}/target 这个目录下你可以看到刚才生成的jar文件。
如果你打算安装此生成文件到本地资源库(默认本地路径为~/.m2/repository ,更多关于资源库相关请参考)中那么执行如下命令:
mvn install
执行上述命令如下信息将被输出:
[INFO] ----------------------------------------------------------------------------[INFO] Building Maven Quick Start Archetype[INFO] task-segment: [install][INFO] ----------------------------------------------------------------------------[INFO] [resources:resources][INFO] [compiler:compile]Compiling 1 source file to/my-app/target/classes[INFO] [resources:testResources][INFO] [compiler:testCompile]Compiling 1 source file to /my-app/target/test-classes[INFO] [surefire:test][INFO] Setting reports dir: /my-app/target/surefire-reports------------------------------------------------------- T E S T S-------------------------------------------------------[surefire] Running com.mycompany.app.AppTest[surefire] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.001 secResults :[surefire] Tests run: 1, Failures: 0, Errors: 0[INFO] [jar:jar][INFO] Building jar: /my-app/target/my-app-1.0-SNAPSHOT.jar[INFO] [install:install][INFO] Installing /my-app/target/my-app-1.0-SNAPSHOT.jar to \ /com/mycompany/app/my-app/1.0-SNAPSHOT/my-app-1.0-SNAPSHOT.jar[INFO] ----------------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ----------------------------------------------------------------------------[INFO] Total time: 5 seconds[INFO] Finished at: Tue Oct 04 13:20:32 GMT-05:00 2005[INFO] Final Memory: 3M/8M[INFO] ----------------------------------------------------------------------------
注意上面的单元测试插件查找单元测试文件是基于命名的,默认测试文件包括如下:
**/*Test.java**/Test*.java**/*TestCase.java
默认不包括:
**/Abstract*Test.java**/Abstract*TestCase.java
你现在已经经历过maven的安装、构建、测试、打包和创建maven工程。这也是大多数项目用maven要做的并且你也注意到了所有的这些都是基于18行pom文件的。你也注意到了如果是ant的话那么他的构建文件差不多是pom文件的两倍才能完成同样的工作。其实maven还有更多的功能但是不需要在pom文件中做任何修改。如果在ant中的话,增加功能就需要修改ant的构建文件。
那么还有什么我们可以免费得到的?这里还有大量的跟上面pom文件一样简单的插件。这里我们提一个maven的很有价值的特性:pom文件不需要做任何修改就可以为你的项目生成一个站点。也许你需要自定义你的站点,不过如果时间不允许的话你也可以执行如下命令生成一个基本的站点:
mvn site
这里还有很多可以单独执行的功能,比如:
mvn clean
这个操作将会清空构建所创建的多有的数据文件,也就是target目录下,这个是个刷新操作。
有可能你需要生成IntelliJ IDEA项目,那么执行如下命令:
mvn idea:idea
如果打算用eclipse那么可以执行如下操作:
mvn eclipse:eclipse
注意:一些maven1.0的还是可用的,比如:jar:jar。不过没啥大用,目前jar:jar不会重新编译源文件,仅仅会简单的基于 target/classes打包成jar文件,这个已经完全有了。
如何使用plugin?
如果打算定制自己的maven工程的话,那么就需要添加或者配置maven插件了。
maven1.0用户注意:稍有些不同,你需要在maven.xml中添加<preGoal>在project.properties中增加实体配置。
如果你打算基于jdk1.5编译,那么你需要在你的pom文件中增加:
...... org.apache.maven.plugins maven-compiler-plugin 2.5.1
在maven2.0中你可以看出这些插件更像是dependency,有时候他们还真是dependency。这些插件会自动下载,如果指定了版本那么他们会按照指定的版本下载(默认是最新版本)。
configuration 元素指定了编译插件所需要的参数。上述例子编译插件作为构建生命周期的一部分,并且可以配置。也可以增加其他的功能配置其他的功能。更多的信息请参见 。
可以在 中查找更多的可用插件。可以基于导航查看他的功能。如何配置插件参数请参考。