使用mvn命令將pom和jar上傳至nexus私服

愛吃柚子的小頭 發表於 2021-07-25

要將自定義的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屬性)對外掛的目標引數進行配置

  1. -Dmaven.test.skip=true 跳過測試
  2. -Dfile.encoding 指定編碼格式
  3. -DgroupId
  4. -DartifactId
  5. -Dversion
  6. -Dpackaging 打包型別,pom或者jar
  7. -Dfile 某路徑下的pom檔案,
  8. -Durl 遠端Nexus私服倉庫地址
  9. -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>[email protected]</password>
    </server>
    <server>
            <id>snapshots</id>
            <username>admin</username>
            <password>[email protected]</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>