首先,我对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目录内的子模块。
对不起,我没有让自己清楚。我需要做的是首先从本地存储库获取文件,然后调用pom文件来构建项目的其余部分。如果我尝试使用它作为多模块,它会给我一个“子模块...不存在”的错误。基本上使用单个mvn命令来获取文件,然后调用另一个pom文件。 – jmhg92