2017-10-10 94 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