要将自定义的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>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>