1、maven工程就是一个src目录和一个pom.xml文件,很简洁。
直接用eclipse导入-maven工程 即可。不需要自己手工去找依赖的jar包,自己加src目录,test目录。
2、一个工程最终就是一个jar包,多个jar包,就是一个父工程下多个子工程。父工程只有一个pom文件,然后就是子工程的目录。pom中的package方式为pom,底下的模块就是子工程。eclipse导入时直接导入父工程即可。
3、eclipse已经自带了maven插件,很方便就可以建立一个maven工程。
4、maven约定,src下有main和test两个目录。main下有java和resource两个目录。test也可以有这两个目录。
java下面放代码,resource下面放配置文件。
5、父工程的pom可以继承到子工程的pom中。
6、pom文件主要有依赖和build两个大标签。一个负责依赖的jar,一个设定插件的运行时间点和参数配置。
还有依赖管理和插件管理两个标签,主要是在父pom中统一定义,然后再子pom中引用,感觉用处不大,用的时候只是少些一个版本号。
7、插件一般可以到maven网站上去搜索,可以看帮助或看源代码,确定它有几个goal,默认的绑定阶段,哪些参数可配(一个mojo就是一个goal,其它的东西都是通过注解标注的,自己看注解就可以)
<!-- 源代码打包插件 -->
<plugin>
<artifactId>maven-source-plugin</artifactId>
<version>2.1</version>
<configuration>
<!-- <finalName>${project.build.name}</finalName> -->
<attach>true</attach>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
<executions>
<execution>
<phase>compile</phase> --绑定插件到编译阶段完成后自动执行
<goals>
<goal>jar</goal> --执行插件的这个goal
</goals>
</execution>
</executions>
</plugin>
7、使用ant 打tar.gz包
查看这个插件中有哪些goals
mvn help:describe -Dplugin={groupId}:{artifactId}:{version}
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-antrun-plugin:1.8
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>hhhhhhhhh</id>
<phase>install</phase>
<configuration>
<target>
<property name="compile_classpath" refid="maven.compile.classpath" />
<property name="runtime_classpath" refid="maven.runtime.classpath" />
<property name="test_classpath" refid="maven.test.classpath" />
<property name="plugin_classpath" refid="maven.plugin.classpath" />
<tstamp>
<format property="VERSIONDAY" pattern="yyyyMMdd" />
</tstamp>
<echo message="plugin classpath: ${VERSIONDAY}" />
<copy todir="target/version/classes/" overwrite="true">
<fileset dir="target/classes/">
</fileset>
</copy>
<copy todir="target/version/" file="config.yml"/>
<tar destfile="${name}${VERSIONDAY}.tar.gz" basedir="target/version/" compression="gzip" />
</target>
</configuration>
<goals>
<goal>runl</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
8、maven什么周期中的阶段
validate
generate-sources
process-sources
generate-resources
process-resources 复制并处理资源文件,至目标目录,准备打包。
compile 编译项目的源代码。
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources 复制并处理资源文件,至目标测试目录。
test-compile 编译测试源代码。
process-test-classes
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。
prepare-package
package 接受编译好的代码,打包成可发布的格式,如 JAR 。
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装至本地仓库,以让其它项目依赖。
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。
9、maven -pl可以指定只运行几个子工程。
maven test -Dtest可以指定类和方法,支持通配符。
mvn install -Dmaven.test.skip=true
10、maven可以直接执行插件的goal,不需要在pom中配置,比如