gpt4 book ai didi

maven - 如何在我的 Maven 默认配置文件中运行插件,但如果指定了另一个配置文件,则阻止这些插件运行?

转载 作者:行者123 更新时间:2023-12-04 08:55:44 25 4
gpt4 key购买 nike

我正在使用 Maven 3.0.3。我对 Maven 配置文件激活中的“activeByDefault”标志感到困惑。我想要的是有一个默认配置文件,但如果有人指定了另一个配置文件(例如 -P 其他配置文件),则默认配置文件构建中的任何插件都不会运行。而且,如果有人指定:

mvn clean install

默认配置文件中的插件将运行,但其他配置文件中的插件不会运行。但是,默认配置文件中的插件始终在运行,即使我在命令行上指定了不同的配置文件(通过“-P other”)。这是我所拥有的
<profiles>
<profile>
<id>dev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<!-- Prepare liquibase scripts to run against the test db. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<dependencies>
<dependency>
<groupId>org.mainco.subco</groupId>
<artifactId>database</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>unzip-liquibase-archive</id>
<phase>process-test-resources</phase>
<configuration>
<target>
<echo message="unzipping liquibase archive" />
<unzip
src="${user.home}/.m2/repository/org/mainco/subco/database/${project.version}/database-${project.version}.jar"
dest="${project.build.directory}" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<!-- Replace relative references in liquibase file with absolute ones. -->
<execution>
<id>format-liquibase-files</id>
<phase>process-test-resources</phase>
<configuration>
<target>
<replace token='include file="'
value="include file=&quot;${project.build.directory}/" file="target/db.changelog-master.xml" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>

<!-- Run the liquibase scripts -->
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>2.0.1</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>build-database</id>
<phase>process-test-resources</phase>
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}</url>
<username>${test.mysql.db.user}</username>
<password>${test.mysql.db.password}</password>
<changeLogFile>${project.build.directory}/db.changelog-master.xml</changeLogFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
...
</profiles>

最佳答案

如果指定了另一个配置文件,则禁用默认配置文件,但只是在同一个 POM 中指定了其他配置文件 .

因此,如果您在 pom 中只有一个配置文件(默认情况下处于事件状态),您将无法停用它,除非您使用 -P!xxx

一个解决方案是确保应该停用 dev 的配置文件始终存在于定义该 dev 配置文件的 POM 上,即使这些配置文件对于某些 POM 是空的。

关于maven - 如何在我的 Maven 默认配置文件中运行插件,但如果指定了另一个配置文件,则阻止这些插件运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com