1.setting优先级 .m2/setting.xml -> config/setting.xml 2.仓库优先级 local -> nexus -> center 3.pom element modelVersion:org.apache.maven/model 超父 groupId:部门 artifactId:功能 version:版本号 SNAPSHOT RELEASE 主版本号.此版本号.增量版本号 packaging:包(default:jar) jar war pom maven-plugin dependencyManagement: 一般父pom 统一版本号 声明式 dependencyManagement 下 dependencies 的依赖 子类不会自动加载 dependency: type:default jar scope:作用域 compile default 编译和打包 test 编译和打包 provided 在编译和测试的过程有效,最后生成war包时不会加入:servlet runtime 在运行的时候依赖,在编译的时候不依赖 jdbc 驱动 system 本地一些 jar(pay 对接之类) 4.依赖传递 scope:也会传递。 第一列表示直接依赖的scope,第一行表示间接依赖 compile test provided runtime compile compile - - runtime test test - - test provided provided - provided provided runtime runtime - - runtime 传递原则 最短路径 加载先后:dependencies 先后顺序
5.生命周期 lifecycle clean pre-clean clean post-clean default test compile package install deploy .. site pre-site site post-site site-deploy 1.A Build Lifecycle is Made Up of Phases 一个生命周期由多个phases组成 2.A Build Phase is Made Up of Plugin Goals 一个phases由多个goals组成 lifecycle:生命周期 phase:可以理解为任务单元 goal: 这是执行任务的最小单元,它可以绑定到任意个phase中,一个phase有一个或多个goal mojo: lifecycle与phase与goal都是概念上的东西,mojo才是做具体事情的,可以简单理解mojo为goal的实现类 6.命令 compile test mvn package-Dmaven.test.skip=true 打包项目时跳过单元测试 package install deploy 发布到私服 mvn dependency:list 显示所有已经解析的所有依赖 mvn dependency:tree > d.text 以树的结构展示项目中的依赖 mvn dependency:analyze 对项目中的依赖进行分析,依赖未使用,使用单未引入 mvn tomcat:run 启动tomcat 全局版本修改 version-maven-plugin mvn version:set -DnewVersion=1.1-SNAPSHOT 强制拉取 mvn clean package -U 7.plugin https://maven.apache.org/plugins/ http://www.mojohaus.org/plugins.html findbugs 静态代码检查 versions 统一升级版本号 mvn versions:set -DnewVersion=1.1
mvn versions:set -DoldVersion=* -DnewVersion=1.0.1-SNAPSHOT -DprocessAllModules=true -DallowSnapshots=truesource 打包源代码 assembly 打包zip、war tomcat7 8.自定义插件 https://maven.apache.org/guides/plugin/guide-java-plugin-development.html <packaging>maven-plugin</packaging> extends AbstractMojo mvn install 参数传递
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.5</version>
<scope>provided</scope>
</dependency>
</dependencies>
@Mojo(name = "myPlugin",defaultPhase = LifecyclePhase.PACKAGE)
public class MyPlugin extends AbstractMojo {
@Parameter
private String msg;
public void execute() throws MojoExecutionException, MojoFailureException {
System.out.println("this is my plugin"+msg);
}
}
<plugin>
<groupId>com.ermu</groupId>
<artifactId>maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>myPlugin</goal>
</goals>
</execution>
</executions>
</plugin>
9.Profile
使用场景 dev/test/pro
setting.xml 家和公司两套
https://help.sonatype.com/repomanager3/download?_ga=2.107225478.54677454.1546739893-329951149.1546739893
发布
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>nexus-releases</name>
<url>http://118.24.21.49:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>nexus-snapshots</name>
<url>http://118.24.21.49:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>