如何在构建或部署期间忽略我的插件(maven-antrun-plugin
)?
我正在从IDL工具生成源文件(用C语言编写)。我使用maven-antrun-plugin
来生成源代码并将其应用到generate-sources
阶段。与build-helper-maven-plugin
一起,IDL工具生成的java源存放在生成的sources文件夹中,最终作为源包含在jar包中。完美!
这是我在maven构建中使用的内容:
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<mkdir dir="target/generated-sources/" />
<!-- other task stuff here -->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>target/generated-sources/gen-java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
但是,现在问题是我们的团队被指示不在我们的持续集成(CI)环境中使用IDL工具;由于未安装IDL工具,插件将在CI中失败。因此,我必须将生成的源(使用src / main / java下的其他代码)签入我们的GIT仓库。
我希望能够仍然运行maven-antrun-plugin
,但是将其与generated-sources
阶段或任何生命周期分离,以便CI环境可以运行我的构建。我在进行更改时手动/本地运行插件,以便生成源,然后检入GIT仓库。
这甚至可能吗?如何在构建或部署期间忽略 maven-antrun-plugin
?
答案 0 :(得分:2)
根据评论者(Jarrod Roberson)的建议,maven 个人资料可用于忽略maven-antrun-plugin
插件中的资源生成。
具体而言,添加下面显示的profiles
块可解决此问题。 default-profile
个人资料默认情况下已激活;它不包含maven-antrun-plugin
块。
但是,generate-source-profile
确实包含将启动源生成的maven-antrun-plugin
。
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>generate-sources-profile</id>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<mkdir dir="target/generated-sources/" />
<!-- other task stuff here -->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
因此,持续集成(CI)工具将执行正常构建和部署(mvn deploy)。当我想生成源代码时,我会通过执行mvn clean install -P generate-sources-profile
来运行生成源配置文件。
答案 1 :(得分:0)
您可以使用profiles或只是跳过maven-antrun-plugin执行
skip - 指定是否应跳过Antrun执行。
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<skip>${skipAntRunForMe}</skip>
<tasks>
<mkdir dir="target/generated-sources/"/>
<!-- other task stuff here -->
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
使用param进行inovke目标-DskipAntRunForMe