Java maven antrun插件内置和配置文件标签
我们在将ear部署到服务器时遇到问题。在不同环境(dev、int、acc等)中的部署存在差异。对于我们部署到1个weblogic服务器的每个环境。在某些情况下,还需要在第二台服务器上进行部署 因此,我们尝试在构建标签中使用antrun插件,如下所示(因为它需要在每个环境的部署上运行:Java maven antrun插件内置和配置文件标签,java,deployment,maven-3,Java,Deployment,Maven 3,我们在将ear部署到服务器时遇到问题。在不同环境(dev、int、acc等)中的部署存在差异。对于我们部署到1个weblogic服务器的每个环境。在某些情况下,还需要在第二台服务器上进行部署 因此,我们尝试在构建标签中使用antrun插件,如下所示(因为它需要在每个环境的部署上运行: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<tasks>
... Here is our deployment task ...
</tasks>
</configuration>
<executions>
<execution><id>deploy_default</id>
<phase>deploy</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven antrun插件
…这是我们的部署任务。。。
部署默认值
部署
跑
然后对于特定于环境的事情,我们使用概要文件(更改文件中的值、部署到第二台服务器等)
<profile>
<id>intg</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<tasks>
... Change value in files ...
</tasks>
</configuration>
<executions>
<execution>
<id>0_resource</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<configuration>
<tasks>
... Here is our deployment task ...
</tasks>
</configuration>
<id>deploy_default</id>
<phase>deploy</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
intg
org.apache.maven.plugins
maven antrun插件
…更改文件中的值。。。
0_资源
过程资源
跑
我们看到的问题是,例如,如果您执行mvn clean install-Pintg,它也会在构建中执行antrun插件。它不应该这样做,因为该插件是针对部署阶段的
一些研究告诉我们,构建标签中不能有两个单独的antrun插件!构建标签中的一个和概要文件标签中的一个是一样的吗?我知道我们可以使用maven replacer插件,所以在这种情况下,它们的概要文件标签中不会有antrun插件,但如果其他事情需要在ant中发生,这不是一个解决方案e配置文件标签
额外说明?也许可以在默认配置文件中定义antrun插件,但是有没有一种方式可以说该配置文件总是需要执行的,即使有其他配置文件被请求?就像如果你想做-Pintg->那么它会做-Pdefault,intg(因为如果您需要在所有地方键入default,那么这将是一场混乱)
备注2:我知道您可以将配置文件的activeByDefault设置为true,但我假设这只在默认配置文件中执行,如果您没有指定-p?配置是在插件级别,而不是执行级别。因此,通过将配置放在执行标记中,它将只在特定阶段和目标中执行 所以它应该是这样的:
<profile>
<id>intg</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<configuration>
<tasks>
... Change value in files ...
</tasks>
</configuration>
<executions>
<execution>
<id>0_resource</id>
<phase>process-resources</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<configuration>
<tasks>
... Here is our deployment task ...
</tasks>
</configuration>
<id>deploy_default</id>
<phase>deploy</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
org.apache.maven.plugins
maven antrun插件
…这是我们的部署任务。。。
部署默认值
部署
跑