1. 程式人生 > >maven專案常見問題及解決

maven專案常見問題及解決

1.針對多模組工程,多個jar還有war,如何實現只發jar,不發war

解決方案:可以在專案根目錄直接執行mvn deploy進行釋出,也可以通過切換到子模組目錄下執行mvn deploy,根據自身情況。

只發jar,不發war可以通過在war模組的pom.xml中增加下面程式碼來實現:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <version>2.7</version
> <configuration> <skip>true</skip> </configuration> </plugin> 前公司是通過在supom中設定的:)

2.無需修改pom.xml中的版本實現釋出的靈活性------maven會判斷版本後面是否帶了-SNAPSHOT,如果帶了就釋出到snapshots倉庫,否則釋出到release倉庫。

  實現方案:修改pom.xml檔案
<groupId>com.test</groupId>
<artifactId>my-test</artifactId>
<packaging>jar</packaging>
<version>${project.release.version}</version>

<properties>
    <java.version>1.8</java.version>
    <project.release.version>1.0-SNAPSHOT</project.release.version>
</properties>

<profiles>
    <profile>
        <id>product</id>
        <properties>
            <project.release.version>1.0</project.release.version>
        </properties>
    </profile>
</profiles>
說明:通過佔位符${project.release.version}來控制需要釋出的版本,用命令mvn deploy -P product,釋出my-test的1.0版本到releases庫。如果使用命令mvn deploy,則預設使用 1.0-SNAPSHOT版本號,將釋出my-test的1.0-SNAPSHOT版本到snapshots庫。

3.release版同一版本重複部署問題:    預設重複部署的話是會報錯的,錯誤碼400,如果想不報錯,可以通過修改部署策略(Deployment pollcy)來實現,,預設是(Disable redeploy),要想重複提交不報錯,可以設定為(Allow redeploy),此時如果是重複上傳會skip. 4.nexus 3.X上傳第三方包    

nexus oss 3.*不能像2.*可以通過登入web介面進行jar包的上傳操作,可以通過下面的方式來上傳第三方jar包:

   。通過傳統方式mvn deploy來上傳;(缺點就是如果是要上傳到第三方庫或用來存放安卓,ios的構建產物的話需要額外安裝配置maven,如pom.xml與setting.xml)

   。針對上面的問題其實官方提供了一個好的上傳方式----------通過API介面

       格式:curl -v -u admin:admin123 --upload-file utils-1.0.jar http://ip/repository/thirdparty/org/foo/utils/1.0/utils-1.0.jar

       上傳個圖片試試:curl -v --user ’admin:admin123’ --upload-file ./test.png http://ip/repository/AppReleases/test.png

 參考:https://www.cnblogs.com/yucongblog/p/6857318.html