Как я могу указать цель муравья для запуска во время выпуска: подготовить цель?
Когда я использую плагин релиза maven, я хочу сделать некоторую предварительную работу (через ant tast) как часть сборки релиза с гарантией того, что используется одна и та же кодовая база (поэтому никакие коммиты не пробираются между ними). У меня есть задача муравья, которую я хочу вызвать, чтобы сделать это, но у меня возникла следующая проблема:
внутри моего файла pom:
<configuration>
<preparationGoals>antrun:run -Dtarget=${antTaskJarBuildXML} clean verify</preparationGoals>
</configuration>
где ${antTaskJarBuildXML} это:
<target><ant antfile=\"../build.xml\" target=\"iv_dependency_build\" /></target>
Когда я запускаю релиз: выполните это журнал:
...
[INFO] Not generating release POMs
[INFO] Executing goals 'antrun:run -Dtarget="<target><ant antfile=\"../build.xml\" target=\"iv_dependency_build\" /></target>" clean verify'...
[WARNING] Maven will be executed in interactive mode, but no input stream has been configured for this MavenInvoker instance.
[INFO] [INFO] Scanning for projects...
[INFO] [WARNING]
[INFO] [WARNING] Some problems were encountered while building the effective model for com.xactsites:iv:war:12.12.4.9
[INFO] [WARNING] The expression ${version} is deprecated. Please use ${project.version} instead.
[INFO] [WARNING]
[INFO] [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[INFO] [WARNING]
[INFO] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[INFO] [WARNING]
[INFO] [INFO]
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Building iv 12.12.4.9
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [WARNING] The artifact javax.xml:jaxrpc:jar:1.1 has been relocated to javax.xml:jaxrpc-api:jar:1.1
[INFO] [INFO]
[INFO] [INFO] --- maven-antrun-plugin:1.7:run (default-cli) @ iv ---
[INFO] [INFO] No ant target defined - SKIPPED
[INFO] [INFO]
[INFO] [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ iv ---
[INFO] [INFO] Deleting C:\dev\apps\iv\target
[INFO] [INFO]
...
И, как показано в журнале, мне сказали, что цель не указана. Я следовал тому, что понял из документации Ant Run
- Я что-то упустил, как передать имя цели?
- Это лучший подход?
Неужели мне не хватает того, что мне не хватает? Я нахожусь на окнах, и это фактическое значение, определенное для xml (${antTaskJarBuildXML}):
"<target><ant antfile=\"../build.xml\" target=\"iv_dependency_build\" /></target>"
РЕДАКТИРОВАТЬ
@carlspring дал отличную обратную связь (+1 на свой ответ), однако, из-за характера проблемы, когда не все придумано, я не мог заставить это работать. Maven ожидает контроля над всем процессом выпуска, но мне нужно заранее выполнить задачу ant (которая создает зависимости, необходимые для рассматриваемой сборки). Я также должен быть уверен, что эта предварительная задача и обычная сборка построены на одном и том же git-теге / хэше. Мое текущее решение состоит в том, чтобы последовательно выполнить шаги, которые плагин релиза будет выполнять, как обсуждено здесь. Благодаря этому я могу создать тег git, а затем выполнить сборку maven для того же тега git. Если есть идеи получше, пожалуйста, внесите свой вклад!
1 ответ
Я бы посоветовал вам определить профиль и включить в него определение ant-run.
Плагин релиза разветвляется, что означает, что ваши аргументы командной строки будут игнорироваться.
ОБНОВЛЕНИЕ:Попробуйте это:
<?xml version="1.0" encoding="UTF-8"?>
<project ...>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>execute-prepare</id>
<!-- Set up your Ant stuff here -->
<goals>
<goal>prepare</goal>
</goals>
<configuration>
<!-- If you have args specific for your release, put them here: -->
<arguments>-Pant-run-release</arguments>
<releaseProfiles>ant-run-release</releaseProfiles>
<mavenExecutorId>forked-path</mavenExecutorId>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>ant-run-release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>execute-something</id>
<!-- Set up your Ant stuff here -->
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>