要將自定義的jar或者pom上傳至nexus私服,需要配置maven的settings檔案!
上傳至nexus私服配置
1. settings配置
<!-- maven設定私服對應的資訊:id、使用者、密碼,其中,id必須和distrubutionManagement的id相同 -->
<server>
<id>db-maven-release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>db-maven-snapshot</id>
<username>admin</username>
<password>admin123</password>
</server>
2. 專案中pom配置
<!-- pom中增加url -->
<distributionManagement>
<repository>
<id>db-maven-release</id> <!-- id的名字可以任意取,但是在setting檔案中的屬性<server>的ID與這裡一致 -->
<name>libs-release</name>
<url>http://192.168.100.99:8081/repository/db-maven-hosted/</url>
</repository>
<snapshotRepository>
<id>db-maven-snapshot</id>
<name>libs-snapshot</name>
<url>http://192.168.100.99:8081/repository/db-maven-snapshot/</url>
</snapshotRepository>
</distributionManagement>
上傳jar包
- IDEA上傳比較簡單,直接直接mvn clear deploy就可以了
mvn deploy:deploy-file --settings D:\apache-maven-3.6.1\conf\settings-nexus.xml
-DgroupId=com.dangbo -DartifactId=core-base -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar -Dfile=pom.xml
-Durl=http://192.168.100.123:8081/repository/maven-snapshots/ -DrepositoryId=snapshots
上傳pom檔案
mvn deploy:deploy-file --settings D:\apache-maven-3.6.1\conf\settings-nexus.xml -Dfile.encoding=UTF-8
-DgroupId=com.dangbo -DartifactId=core-dependencies -Dversion=1.0.0-SNAPSHOT -Dpackaging=pom
-Dfile=pom.xml -Durl=http://192.168.100.123:8081/repository/maven-snapshots/ -DrepositoryId=snapshots
常用的打包配置項
-D代表(Properties屬性)對外掛的目標引數進行配置
- -Dmaven.test.skip=true 跳過測試
- -Dfile.encoding 指定編碼格式
- -DgroupId
- -DartifactId
- -Dversion
- -Dpackaging 打包型別,pom或者jar
- -Dfile 某路徑下的pom檔案,
- -Durl 遠端Nexus私服倉庫地址
- -Dspring.profiles.active=prod 指定springboot的配置檔案
--setting 指定settings檔案,等同於-s,如果settings檔名為預設的settings.xml,可以省略不寫
完整的settings配置
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository>D:\apache-maven-3.6.1\repository-nexus</localRepository>
<servers>
<!-- 一般,私服倉庫的下載和部署是在pom.xml檔案中的repositories和distributionManagement元素中定義的,然而,一般類似於使用者名稱,密碼等資訊不應該在pom.xml檔案配置中,這些資訊可以配置在setting.xml中 -->
<!-- maven設定私服對應的資訊:id、使用者、密碼,其中,id必須和distrubutionManagement的id相同 -->
<!-- 私域環境maven倉庫,為了上傳jar或pom到私服倉庫 -->
<server>
<id>releases</id>
<username>admin</username>
<password>admin@nexus</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin@nexus</password>
</server>
</servers>
<mirrors>
<!-- 私服和阿里雲混用,當nexus私服連線不上,才會走第二個,預設只有一個生效 -->
<!-- id是唯一標識一個mirror,name節點名,url是官方的庫地址,mirrorOf代表了一個映象的替代位置,例如central就表示代替官方的中央庫 -->
<!-- 雖然mirrors可以配置多個子節點,但是它只會使用其中的一個節點,即預設情況下配置多個mirror的情況下,只有第一個生效,只有當前一個mirror無法連線的時候,才會去找後一個 -->
<mirror>
<id>fp-nexus</id>
<name>nexus maven</name>
<url>http://192.168.100.99:8082/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<profile>
<id>nexus-profile</id>
<repositories>
<repository>
<id>fp-nexus</id> <!--倉庫id,repositories可以配置多個倉庫,保證id不重複-->
<url>http://192.168.100.99:8082/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Public Repositories</name>
<url>http://192.168.100.99:8082/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!-- 啟用配置 -->
<activeProfiles>
<activeProfile>jdk1.8</activeProfile>
<activeProfile>nexus-profile</activeProfile>
</activeProfiles>
</settings>