Maven 自动打包上传到私服 Nexus

转载于:http://blog.csdn.net/jerome_s/article/details/54410178

 
        Maven获取jar的默认顺序是
        
        1. Releases 在发布库里面查找(主要用于稳定版)
        2. Snapshots 在快照库里面查找(和上面的区别就是在pom加了个<version>0.0.5-SNAPSHOT</version>,主要用于开发阶段)
        3. 3rd party 不是我们自己开发的,也在中央库找不到的,就要到这里手动上传包到私服。
        4. Central 到中央库查找。
 
 

        上传私服 pom.xml 配置

1
2
3
4
5
6
7
8
9
10
<distributionManagement >
    <repository >
        <id >releases </id >
   </repository >
   <snapshotRepository >
        <id >Snapshots </id >
   </snapshotRepository >
</distributionManagement 
 
        settings.xml 配置
1
2
3
4
5
6
7
8
9
10
11
12
<servers>
    <server
       <id>releases</id
       <username>admin</username
       <password>qsapwd</password
    </server
    <server
       <id>Snapshots</id
       <username>admin</username
       <password>qsapwd</password
    </server>  
</servers
        
        打包源码 pom.xml 配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<build>
        <plugins>
            <plugin<!-- 打jar包 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <excludes>
                        <exclude>**/*.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>
            <plugin<!-- 打源码 -->
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-source-plugin</artifactId>  
               <version>2.4</version>
                <configuration>  
                    <attach>true</attach>  
                </configuration>  
                <executions>  
                    <execution>  
                        <phase>compile</phase>  
                        <goals>  
                            <goal>jar</goal>  
                        </goals>  
                    </execution>  
                </executions
            </plugin> 
        </plugins>
    </build>
 
Maven 打源码包,并上传私服
 
        1. 使用命令行
 
        cmd 进入到项目根目录执行:mvn clean source:jar package 会生成两个jar,其中有一个是源码的jar,分别使用相同的groupId和artifactId。
 
        也可以直接,打包并上传私服,使用命令:deploy -e
 
        2. 使用Eclipse
 
        右击项目 Run as →Maven bulid,在Goals输入deploy -e。
        

 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一个基础类,可能要升级并放到私服库里,为了方便,应该能够自动打包放到nexus。这就需要配置maven一些参数与pom.xml。

依次在settings.xml文件裡輸入

Xml代码  收藏代码
  1.  <!-- nexus帳號和密碼-->  
  2.   
  3.    <server>    
  4.      <id>releases</id>    
  5.      <username>admin</username>    
  6.      <password>admin123</password>    
  7.    </server>    
  8.    <server>    
  9.      <id>snapshots</id>    
  10.      <username>admin</username>    
  11.      <password>admin123</password>    
  12.    </server>       
  13.  </servers>    
  14.   
  15. ...  
  16.   
  17. <!-- 引用naxus倉庫組-->  
  18.    <profile>  
  19.        <id>dev</id>  
  20.           <repositories>  
  21.              <repository>  
  22.                  <id>nexus</id>  
  23.                  <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>  
  24.                  <releases>  
  25.                     <enabled>true</enabled>  
  26.                  </releases>  
  27.                  <snapshots>  
  28.                     <enabled>true</enabled>  
  29.                  </snapshots>  
  30.               </repository>  
  31.             </repositories>             
  32.             <pluginRepositories>  
  33.                 <pluginRepository>  
  34.                     <id>nexus</id>  
  35.                     <url>http://127.0.0.1:8081/nexus/content/groups/public</url>  
  36.                     <releases>  
  37.                         <enabled>true</enabled>  
  38.                     </releases>  
  39.                     <snapshots>  
  40.                         <enabled>true</enabled>  
  41.                     </snapshots>  
  42.                 </pluginRepository>  
  43.             </pluginRepositories>  
  44.         </profile>  
  45. ..  
  46.   
  47.  <!-- nexus -->  
  48.   <activeProfiles>  
  49.         <activeProfile>dev</activeProfile>  
  50.   
  51.     </activeProfiles>   


注意:根據標籤位置準確輸入

 

在本项目的pom.xml配置即可 
<!--上传配置 必须--> 

<distributionManagement>
<repository>
<id>releases</id>
<url>http://127.0.0.1:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>

<!--上传source.jar 非必须-->

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-source-plugin</artifactId>

<executions>

<execution>

<id>attach-sources</id>

<goals>

<goal>jar</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

上面的ID和pom.xml中对应distributionManagement-> repository的ID,用户名和密码需要在nexus中配置。

完成以上配置,只要输入命令:mvn deploy 即可。

 

遇到的问题:

maven deploy到nexus报错:Return code is: 401, ReasonPhrase:Unauthorized

提交到nexus时候报错:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project *: Failed to deploy artifacts: Could not transfer artifact *:jar:1.0 from/to releases (http://10.1.81.199:8081/nexus/content/repositories/releases/): Failed to transfer file: http://10.1.81.199:8081/nexus/content/repositories/releases/com/cs2c/security-management-client* /1.0/*-1.0.jar. Return code is: 401, ReasonPhrase:Unauthorized.

原来是没有配置认证。

maven目录conf的setting.xml里,

  1.   <server>  
  2.     <id>releases</id>  
  3.     <username>admin</username>  
  4.     <password>admin123</password>  
  5.   </server>  
  6.  <server>  
  7.   <id>snapshots</id>  
  8.   <username>admin</username>  
  9.   <password>admin123</password>  
  10.   </server>  
  11. </servers>  

用户名和密码都是nexus的。再次deploy即可。

注意这里的id要和pom.xml里远程deploy的地址对应一致,我的pom.xml里配置:

 

    1. <!-- 配置远程发布到私服,mvn deploy -->  
    2.     <distributionManagement>  
    3.         <repository>  
    4.             <id>releases</id>  
    5.             <name>Nexus Release Repository</name>  
    6.             <url>http://10.1.81.199:8081/nexus/content/repositories/releases/</url>  
    7.         </repository>  
    8.         <snapshotRepository>  
    9.             <id>snapshots</id>  
    10.             <name>Nexus Snapshot Repository</name>  
    11.             <url>http://10.1.81.199:8081/nexus/content/repositories/snapshots/</url>  
    12.         </snapshotRepository>  
    13.     </distributionManagement
posted @ 2017-12-20 17:34  技术颜良  阅读(2219)  评论(0编辑  收藏  举报