这是我的settings.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<profiles>
<profile>
<id>wiki</id>
<properties>
<repo.url>wikipedia.pl</repo.url>
</properties>
</profile>
<profile>
<id>youtube</id>
<properties>
<repo.url>youtube.pl</repo.url>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
</settings>
和带有回显的pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Repository url: </echo>
<echo>${repo.url}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
当我运行 mvn软件包时,我假设配置文件 youtube 将被激活(日志中的= =显示 youtube.pl )。但是,当我输入 mvn -P Wiki软件包时,它应该是日志中的 wikipedia.pl ,但它仍然是 youtube.pl -为什么? activeByDefault 标签是否有问题?
当配置文件位于pom.xml中时,没有问题。
答案 0 :(得分:0)
我认为简介文档https://maven.apache.org/guides/introduction/introduction-to-profiles.html对此进行了解释。虽然容易忽略。默认情况下,您激活的settings.xml中的配置文件已针对所有构建启用。
如果您启用其他配置,则pom中默认启用的配置文件将被禁用:
除非使用上述方法之一激活同一POM中的另一个配置文件,否则此配置文件将自动对所有版本均有效。
以及关于settings.xml配置文件:
此选项接受一个参数,该参数是要使用的配置文件ID的逗号分隔列表。指定此选项后,除了通过其激活配置或settings.xml中的部分激活的任何配置文件之外,还将激活在option参数中指定的配置文件。
似乎您想根据个人资料更改要上传的网址。我认为这属于“便携式产品”的建议。任何不共享settings.xml的人将无法重复构建的工作。
如果您要“隐藏”构建中的这些URL,以使其仅在CI服务器上可用,则可以在相同的settings.xml配置文件中设置不同的属性,并在pom中使用两个配置文件来将uri设置为值之一。
另一种适合您的解决方案可能是使用-P!profileId选项禁用配置文件。