2017-10-10 136 views
-1

首先,我對maven很陌生,我也不太瞭解它的許多概念,所以我爲任何noob錯誤而致歉。結帳後的Maven構建項目

我正在從一個本地svn存儲庫檢出分支的項目,這個分支的項目都是maven項目。其中一個項目有一個pom.xml文件,當我撥打mvn package時,該文件將所有其他項目編譯爲project.ear文件。

我需要做的是能夠創建一個外部pom.xml文件來檢出分支,然後在最近獲得的一個項目中調用pom.xml。像這樣的(僞代碼)的東西:

checkout branch_url checkoutDir=src 
mvn src/project-with-pom/pom.xml package 

我已經使用了SCM插件做結帳(scm:checkout),但我似乎無法弄清楚如何調用內pom.xml文件籤後。

我嘗試使用調用插件,但我不認爲這是它的目的,它總是給我下面的:被選定爲執行

沒有項目。

調用

<!-- scm:checkout plugin --> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-invoker-plugin</artifactId> 
    <version>3.0.1</version> 
    <configuration> 
     <setupIncludes> 
      <setupInclude>${basedir}/src/project-with-pom/pom.xml</setupInclude> 
     </setupIncludes> 
     <pomIncludes> 
      <pomInclude>*/pom.xml</pomInclude> 
     </pomIncludes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>create_ear_file</id> 
      <goals> 
       <goal>package</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

我使用scm:bootstrap結賬完成後正確的,但我總是得到下面的錯誤也嘗試:

該項目已從由於以前構建取締故障。

SCM:引導

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-scm-plugin</artifactId> 
    <version>1.9.5</version> 
    <configuration> 
     <username>user</username> 
     <password>pass</password> 
     <connectionType>connection</connectionType> 
     <scmVersion>branch_name</scmVersion> 
     <scmVersionType>branch</scmVersionType> 
     <checkoutDirectory>${basedir}/src</checkoutDirectory> 
     <workingDirectory>${basedir}</workingDirectory> 
     <pushChanges>false</pushChanges> 
     <goals>package</goals> 
     <goalsDirectory>/src/project-with-pom</goalsDirectory> 
     <includes>POM.xml</includes> 
    </configuration> 
</plugin> 

我一直在使用的模塊也試過,但由於模塊文件不存在,它總是給我一個錯誤。我試圖用配置文件做這件事,但沒有。

有沒有辦法做到這一點?

此外,在一個側面說明,有沒有什麼辦法可以避免使用純文本的密碼爲svn?

編輯

猜猜我不是那麼清楚。我會嘗試重述它。

我的最終目標是通過一個maven命令來獲取一組乾淨的項目。如果我要使用Subversive並檢出一個分支,我可以使用maven從所述分支編譯.EAR文件,而不會有任何問題。但是我想要做的是使用scm:checkout而不是Subversive,然後在單個maven命令中構建項目。

的執行將是這樣的:

mvn scm:checkout -DcheckoutDirectory=src & mvn package -f src/project-with-pom/pom.xml 

我採用了多模塊的方式嘗試,但它似乎是行家首先構建子模塊,然後父模塊,因此我得到的「子不存在「錯誤。我需要父模塊首先執行checkout命令,然後構建checkout目錄內的子模塊。

回答

0

您可以使用-f參數

http://books.sonatype.com/mvnref-book/reference/running-sect-options.html

調用的Maven使用不同的POM文件,但實際上,我不完全明白你的要求(或您的項目結構):每個Maven項目有一個pom.xml。如果子目錄中有POM,則您有一個多模塊項目。沒有POM你不能有一個Maven項目。

+0

對不起,我沒有讓自己清楚。我需要做的是首先從本地存儲庫獲取文件,然後調用pom文件來構建項目的其餘部分。如果我嘗試使用它作爲多模塊,它會給我一個「子模塊...不存在」的錯誤。基本上使用單個mvn命令來獲取文件,然後調用另一個pom文件。 – jmhg92