1.核心插件
1.1 War
war插件有三种打包方式:
第一种是war,复制所需文件到target目录,然后压缩war包。
第二种是war:exploded,复制所需文件到target目录。像Tomcat这种支持以目录部署的项目,每次压缩一次war包太慢了,可采用这种方式。
第三种是war:inplace,直接在webapp目录中复制所需的文件,如lib库,classes文件等。
2.使用模式
在持续集成时,推荐使用maven脚本来测试、打包和部署项目(详见Maven Plugins)。
在开发时,推荐的模式是使用m2eclipse插件进行依赖jar管理和pom.xml文件的编辑。(见后)
而另一模式是不依赖maven,直接执行copy-jar.bat将依赖jar复制到/lib 或 webapp/WEB-INF/lib 目录,并加入到版本控制系统中分发给项目团队。
3. 依赖Jar的常见问题
3.1 Nexus私服
nexus私服非常易用,已自带Jetty,使用jsw wrapper启动。
访问http://localhost:8081/nexus/ 可浏览仓库内容,如需管理时,用admin/admin123帐号登录。
在项目中使用时,pom.xml中设置
<repositories>
<repository>
<id>nexus</id>
<name>local nexus</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>local nexus</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
</pluginRepository>
</pluginRepositories>
Nexus是以文件系统的方式存放jar文件的。文件sonatype-work/nexus/storage中
注意以下几个目录:
- Central : Maven中央服务器的映像。
- Release: 项目组劳动成果的jar。
- Thirdparty 不在Maven中央服务器,需自行部署的第三方类库jar。
Jetty的默认端口是8081,设置PLEXUS_APPLICATION_PORT的系统环境变量可改动。
如果要增加新的远程仓库,Login 后,在Repository中仿照maven central添加仓库,然后在groups中增加该repo
3.2 m2Ecipse插件
安装0.9.6以上版本,Maven Embedder,Maven Intergration for Eclipse,Maven POM Editor,Maven POM XML Editor,Maven Intergration for WTP 五个模块。
m2eclipse可以import maven文件在eclipse项目中来创建整个wtp项目,比较方便,而且不会出现这样那样不合拍的奇怪事情。
3.3 不能直接上网,需要设置代理怎么办?
修改maven的conf/setting.xml文件中的Proxy节点。
3.4 公司内部的jar或其他官网上没有的jar
可以把jar安装到公司内部的私服中,也可以把直接执行命令将jar安装到本地仓库。
mvn install:install-file -Dfile=yourJar -DgroupId=yourGourp -DartifactId=yourArtifact -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true
3.5 denpendency插件
- mvn dependency:tree 显示jar的依赖树
- mvn dependency:analyze 扫描你的代码,分析是否有多余的显式定义或最好显式定义的隐式定义。
- 将test,provided级别jar复制到到/lib,compile,runtime级别jar复制到/webapp/WEB-INF/lib。
call mvn dependency:copy-dependencies -DoutputDirectory=lib -DexcludeScope=runtime
call mvn dependency:copy-dependencies -DoutputDirectory=webapp/WEB-INF/lib -DincludeScope=runtime
4.目录结构
默认目录中,java文件,配置文件,Web项目文件分别存放于src/main/java,src/main/resources,src/main/webapp中,可用如下方法将它们的目录层次提高。
4.1 webapp
修改war插件的定义:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
<warSourceDirectory>${basedir}/webapp</warSourceDirectory>
</configuration>
</plugin>
4.2 java 与 resources
修改build节点
<build> <sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
<testResources>
<testResource>
<directory>test</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources> </build>