如何调用特定的执行

时间:2017-12-04 10:06:57

标签: maven jenkins maven-3 maven-invoker-plugin

我正在尝试用MavenInvokerPlugin替换maven exec,因为Jenkins上的问题转发了maven设置文件。

所以在bash中看起来很直白:

mvn dependency:copy-dependencies@resolve-maven-deps 

我对MavenInvokerPlugin配置的翻译是

             <plugin>
                <artifactId>maven-invoker-plugin</artifactId>
                <version>3.0.1</version>
                <configuration>
                    <projectsDirectory>${project.basedir}/src/main/docker</projectsDirectory>
                    <localRepositoryPath>${project.build.mavenDependencies}</localRepositoryPath>
                    <goal>dependency:copy-dependencies@resolve-maven-deps</goal>
                </configuration>
                <executions>
                    <execution>
                        <id>integration-test</id>
                        <goals>                                 
                            <goal>run</goal>
                        </goals>
                        <phase>compile</phase>
                    </execution>
                </executions>
            </plugin> 

看起来执行ID完全被忽略了,因为我尝试了随机字符串并且mvn成功构建了项目。

mvn dependency:copy-dependencies@asdfasdfa 

所以我想知道这个功能是否得到支持以及我做错了什么。

P.S。我知道从maven中调用maven是反模式,但是在没有其他方法的情况下,这正是极少数情况。

1 个答案:

答案 0 :(得分:0)

在使用maven调用者查看项目后,我发现了这个技巧。

不使用

目标标记,而是提供invokerPropertiesFile:

<pom>${project.basedir}/xxx/pom.xml</pom>    
<invokerPropertiesFile>${project.basedir}/invoker.properties</invokerPropertiesFile>

文件内容:

invoker.goals=compile -P resolve-maven-deps