这个问题很好地解释了如何 根据发送给Maven的属性conditionally execute maven plugins跳过一个Maven概要文件,这会很棒,但是我处于两种情况,一个接一个地执行另一个Profile的情况,但是如果其中一个Java方法第一个Profile进入特定状态,我根本不想运行第二个Profile。
我有多个很好的理由想要从单个Maven命令运行整个过程。
这可能吗?
我正在想像这样的事情,但是真的不知道如何从Java中引用该属性。
来自pom.xml:
<profile>
<id>Profile 2</id>
<activation>
<property><name>!maven.test.skip</name></property>
<property><name>!skipTests</name></property>
</activation>
<build>
...
</build>
</profile>
来自某些Java类:
public static void main(String... args) {
if(weShouldRunProfile2){
skipTests = false; //obviously wrong, but not sure what to put here if this is even possible
}
}
答案 0 :(得分:0)
似乎可以按照以下说明从Java流程中再次调用Maven:How to run maven from java?
一个简单的调用API:maven-invoker。
InvocationRequest request = new DefaultInvocationRequest();
request.setPomFile( new File( "/path/to/pom.xml" ) );
request.setGoals( Arrays.asList( "clean", "install" ) );
Invoker invoker = new DefaultInvoker();
invoker.execute( request );
答案 1 :(得分:0)
最终,我决定只使用文件系统来解决此问题。配置文件1写入一个文件,其中包含有关配置文件2应该执行的操作的数据,然后配置文件2读取该文件,如果该文件指示应该执行此操作,则提早退出。