工程管理(一):maven
阿新 • • 發佈:2019-01-06
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 source 打包原始碼 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>