有条件地从Java跳过Maven配置文件

时间:2018-06-26 21:29:56

标签: java maven

这个问题很好地解释了如何 根据发送给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
  }
}

2 个答案:

答案 0 :(得分:0)

似乎可以按照以下说明从Java流程中再次调用Maven:How to run maven from java?

  

一个简单的调用API:maven-invoker。

     

项目文档:http://maven.apache.org/shared/maven-invoker/

     

用法:http://maven.apache.org/shared/maven-invoker/usage.html

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读取该文件,如果该文件指示应该执行此操作,则提早退出。