首先,我是maven的新手,我并不是很了解它的许多概念,所以我对任何noob错误道歉。
我正在开展一个项目,我从本地svn存储库中检出一个分支,其项目都是maven项目。其中一个项目有一个pom.xml
文件,当我调用project.ear
时,会将所有其他项目编译成mvn package
文件。
我需要做的是能够创建一个外部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
,但在结帐完成后我总是收到以下错误:
由于之前的失败,该项目已被禁止使用。
<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
我尝试使用多模块方法但似乎maven首先构建子模块然后构建父模块,因此我得到“child not not exists”错误。我需要父模块首先执行checkout命令,然后构建checkout目录中的子模块。
答案 0 :(得分:0)
您可以使用-f
参数
但实际上,我并不完全理解您的请求(或您的项目结构):每个Maven项目都有一个pom.xml
。如果子目录中有POM,则表示您有一个多模块项目。没有POM,你就无法拥有Maven项目。