Пропустить Maven Profile условно из Java - PullRequest
0 голосов
/ 27 июня 2018

Этот вопрос отлично объясняет, как Пропустить профиль Maven на основе свойств, отправленных в Maven, условно выполнить подключаемые модули maven , что было бы замечательно, но я нахожусь в ситуации, когда у меня есть два профиля, которые выполняются один за другим, однако, если один из методы Java в первом профиле попадают в определенное состояние, я вообще не хочу запускать второй профиль.

У меня есть несколько очень веских причин для запуска всего этого процесса одной командой 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 голосов
/ 27 июня 2018

В конце концов, я решил использовать файловую систему для решения этой проблемы. Профиль 1 записывает файл, содержащий данные о том, что должен делать Профиль 2, затем Профиль 2 считывает этот файл и завершает работу раньше, если этот файл указывает, что он должен это сделать.

0 голосов
/ 27 июня 2018

Похоже, я мог бы снова вызвать Maven из моего Java-процесса, следуя инструкциям здесь: Как запустить Maven из 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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...