maven下载依赖jar包的源码和javadoc:
mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc
maven多模块示例:
假设在名字为simple-parent的文件夹下面有一个pom.xml (也就是所谓的父模块pom.xml)、一个名字为 firstChild 的文件夹(里面是一个maven子模块)、一个名字为secondChild的文件夹(里面也是一个maven子模块)
其中父模块pom.xml 内容为:
注意:模块的加载顺序和该模块在父模块的pom.xml中配置的顺序有关,例如下面的firstChild就会先于secondChild模块
4.0.0
com.tch
maven-parent
pom
1.0
Chapter 6 Simple Parent Project
firstChild
secondChild
firstChild 的pom.xml :
4.0.0
com.tch
maven-parent
1.0
firstChild
1.0
jar
UTF-8
secondChild 模块的pom.xml :
4.0.0
com.tch
maven-parent
1.0
secondChild
war
1.0
UTF-8
webmaven
org.mortbay.jetty
maven-jetty-plugin
在父pom.xml中配置 dependency 和 配置 dependencyManagement 的区别:
在父pom.xml中配置dependency的话,子模块就会继承该依赖,假如父pom.xml中配置了下面的依赖:
然后在子模块运行下面命令查看子模块的依赖:
就会发现子模块的依赖包含了上面再父pom.xml中配置的依赖。类似于java里面继承的效果。
如果在父pom.xml中配置dependencyManagement的话,假如dependencyManagement里面配置了上面同样的依赖:
然后在子模块运行
mvn dependency:resolve
查看子模块的依赖的话,就会发现子模块并没有继承父模块dependencyManagement里面配置的依赖。
要想使用父模块dependencyManagement里面配置的依赖,需要在子模块配置(注意没有version):
,然后在子模块运行
命令查看子模块的依赖,就会发现子模块的依赖包含了junit,并且版本号是父pom.xml里面配置的版本号。
所以,dependencyManagement 其实是为了统一管理版本号,把公用的依赖放到dependencyManagement里面管理,在需要引用该依赖的地方只需要groupId和artifactId即可引用该依赖。避免了版本号不同引发的问题
使用jetty插件运行web项目:
在pom.xml 的build 中添加jetty插件:(版本号自定)
org.mortbay.jetty
maven-jetty-plugin
${jetty-version}
然后运行命令:mvn jetty:run 即可
貌似如果运行tomcat插件的话,我这里直接运行 mvn tomcat:run 就可以了,没有配置tomcat插件。。。
使用Maven CXF插件根据WSDL生成java类:
org.apache.cxf
cxf-codegen-plugin
2.7.8
generate-sources
generate-sources
src/cxf
http://xxx?wsdl
jaxws21
1
wsdl2java
然后执行 mvn generate-sources 即可在src/cxf目录下生成java类
将项目依赖的jar包的源码下载到目录dependency_src目录,但不解压(以jar格式):
mvn dependency:copy-dependencies -DoutputDirectory=dependency_src -DincludeScope=compile -Dclassifier=sources
将项目依赖的jar包的源码下载到目录dependency_src目录并解压:
mvn dependency:unpack-dependencies -Dclassifier=sources -DfailOnMissingClassifierArtifact=false -DoutputDirectory=dependency_src -DincludeScope=compile
使用jacoco生成测试覆盖率report :
参考:http://www.eclemma.org/jacoco/trunk/doc/index.html
- Maven Usage Example - Offline Example
maven tomcat plugin : 在pom.xml中添加Plugin:然后运行:mvn tomcat7:run即可
ssh
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
9090
/
maven jetty plugin:在pom.xml中添加plugin,然后运行: mvn jetty:run 即可
org.mortbay.jetty
maven-jetty-plugin
6.1.10
5
/
18080
多个module的时候,我们修改了某个module,然后只需要从该module开始build即可,这样就不必要build这个module之前的那些module了:(详细参考)
mvn clean install -rf module-name
parent pom.xml和child pom.xml:
parent pom.xml:
The value of is the relative path from the com.mycompany.app:my-app:1 to com.mycompany.app:my-module:1's POM(可以在链接中搜索这句话)
module的值,是从parent的pom.xml到该module的pom.xml的相对路径
child pom.xml:
parent-groupId
parent-artifactId
parent-version
../../pom.xml
relativePath的值,是从该module的pom.xml到parent的pom.xml的相对路径
国内maven 仓库地址:
D:/Program Files/apache-maven-3.3.1/repository
CN
OSChina Central
http://maven.oschina.net/content/groups/public/
central
ibiblio
ibiblio
http://mirrors.ibiblio.org/pub/mirrors/maven2/
central
jboss-public-repository-group
JBoss Public Repository Group
http://repository.jboss.org/nexus/content/groups/public
central
添加log4j slf4j依赖:
org.slf4j
slf4j-log4j12
1.7.2