去除依赖
我在子模块a中引用了一个依赖, 但是这个依赖在spring-xxx的父项目中已经申明了, 且比我的旧, 找到引入spring-xxx的地方:
mvn -Dverbose dependency:tree
com.jayway.jsonpath
json-path
插件使用
因为公司的代码扫描会检测到antlr生成的代码里有冗余的imports, 不让合并,所以, 为了跳过它.
标签, 默认值是${basedir}/src/java/antlr
下, ${basedir}变量会自动寻找当前项目的目录(不是根目录,在子项目里获取根目录是其他方法)
outputDirectory
是生成的类的目录, 生成的类,会默认具有antlr下的目录结构, 如
antlr/com/abc/my.g4
那么生成的类在output的目录后面 + antlr/com/abc/ 下.
这样就可以跳过代码检测了, 在拉下代码后, 使用compile就可以生成代码了, 且为了避免被git add ,还要设置.gitignore
将目录下的文件加入, 这样上传的时候就会忽略它们.
org.antlr
antlr4-maven-plugin
4.9.3
${basedir}/src/main/java/
true
true
antlr
process-sources
antlr4
maven的生命周期
参考菜鸟教程
插件的运行可以绑定到任何的生命周期: 1. clean(清理, 依赖) 2. build 3. site(发布文档), 而每个周期, 又可以分为许多phase, Maven 实际上是一个依赖插件执行的框架,每个任务实际上是由插件完成. 其中build是编译构建阶段, 又分为了:
上个小节中就是把插件绑定到了处理源代码阶段, 其实应该放在生成源代码阶段的.
profile 的使用
构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值。使用构建配置文件,可以为不同的环境,比如说生产环境(Production)和开发(Development)环境,定制构建方式。在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通过各种方式触发。配置文件在构建时修改 POM,并且用来给参数设定不同的目标环境(比如说,开发(Development)、测试(Testing)和生产环境(Production)中数据库服务器的地址)。
项目中定义了test
dev
prod
,且使用了
true
来标识默认启动的profile, 也可以用命令行指定 mvn compile -Pdev
profile里可以配配置build的插件, repo等. 还可以通过操作系统来指定不同的build参数, 如hive,就是这么做的
windows-test
Windows
org.apache.maven.plugins
maven-dependency-plugin
2.8
copy-dependencies
package
copy-dependencies
${project.build.directory}/deplibs/
false
false
true
${basedir}/${hive.path.to.root}/testutils/hadoop.cmd
;${env.HADOOP_HOME}/bin
${project.build.directory}/deplibs/*
file:///${test.tmp.dir}
file:/
doing process sources
和goal同级的config内配置tasks还能输出信息,或者其他事情.
项目的依赖管理
依赖配置
todo 关于 依赖的 范围: run , compile, provides, test 还不是很清楚, 项目里没有实际的例子
Maven单独构建多模块项目中的单个模块
说明:
1、可能存在的场景,多模块项目没有互相引用,那么此时可以单独构建单个项目,指定到子模块的pom.xml文件即可完成编译。
2、如果多模块项目各自都引用了,那么单独编译子模块的pom.xml文件会直接报错,解决方法就是编译父项目pom.xml。
3、如果编译父项目,那么可能会造成编译时间很慢,其中有些项目也不需要编译,解决方法如下:
解决方法:
Maven选项:
-pl, --projects
Build specified reactor projects instead of all projects
-am, --also-make
If project list is specified, also build projects required by the list
-amd, --also-make-dependents
If project list is specified, also build projects that depend on projects on the list
首先切换到工程的根目录
单独构建模块jsoft-web,同时会构建jsoft-web模块依赖的其他模块
mvn install -pl jsoft-web -am
单独构建模块jsoft-common,同时构建依赖模块jsoft-common的其他模块
mvn install -pl jsoft-common -am -amd
参考:
http://blog.csdn.net/yanjunlu/article/details/39177115(以上内容转自此篇文章)