在Maven中从POM文件读取属性文件
为什么这不起作用?如何从属性文件中选择版本号 读取pom.xml中的属性在Maven中从POM文件读取属性文件,maven,pom.xml,Maven,Pom.xml,为什么这不起作用?如何从属性文件中选择版本号 读取pom.xml中的属性 <project> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <ve
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
</execution>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</executions>
</plugin>
</plugins>
</build>
</project>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj.aspectjrt.version}</version>
</dependency>
org.codehaus.mojo
属性maven插件
1
初始化
读取项目属性
开发属性
在dev.properties中
org.aspectj.aspectjrt.version=1.6.11
pom.xml中的依赖关系
<project>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
</execution>
<configuration>
<files>
<file>dev.properties</file>
</files>
</configuration>
</executions>
</plugin>
</plugins>
</build>
</project>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${org.aspectj.aspectjrt.version}</version>
</dependency>
org.aspectj
aspectjrt
${org.aspectj.aspectjrt.version}
错误:依赖项必须是生成作业的此属性(dev.properties)
文件的有效版本
<files>
<file>dev.properties</file>
</files>
开发属性
对于依赖关系,您需要在pom.xml文件中添加如下内容
<properties>
<org.aspectj.aspectjrt.version>1.6.11</org.aspectj.aspectjrt.version>
</properties>
1.6.11
从命令行启动Maven时,它会经历许多阶段。这里是对这些阶段的伪描述,我有意简化确切的顺序(冒着说一些稍微不正确/不符合顺序的话的风险),这样你就可以明白为什么你试图做的事情不起作用
-Dname=value
在命令行上定义的任何属性都被注入MavenSession
-N
表示只构建根pom.xml
,-pl
允许指定要构建的模块列表,-am
和-amd
分别允许从-pl
指定的模块向上游或下游添加模块。Maven此时还没有解析任何pom.xml
文件-p
配置文件激活规则以查看要激活的配置文件pom.xml
文件。它首先加载并解析根pom.xml
,即当前目录中的根(或者,如果您使用-f
指定了另一个pom.xml
,则该根)。最初的解析只是专注于计算要构建的项目列表。配置文件激活仅在可能影响可用的
列表时考虑。pom.xml
中的组Id、工件Id、版本和打包坐标不能包含属性,因为此时尚未对pom.xml
中的属性进行解析。(细心的读者还将看到,这也解释了为什么您不能基于pom.xml
中的属性激活概要文件,因为在此阶段仅分析了系统属性)pom.xml
文件进行更多的解析,以构建构建扩展列表(如果有的话)和插件列表。在这个阶段,解析需要对每个项目中的
进行评估,因此这是对这些进行评估并“注入”到有效模型中的时候。因此,您可以使用系统属性和pom属性来定义(xpath)/project/build/extensions
,/project/build/pluginManagement/plugins/plugins
,/project/build/pluginManagement/plugins/dependencies
,中的坐标和其他依赖项,/project/build/plugins/plugin
和/project/build/plugins/plugins/dependencies
pom.xml
文件中定义的项目依赖项列表。这是因为反应堆内的另一个项目可能会产生依赖关系,从而迫使项目执行顺序。因此,您可以使用系统属性和pom属性来定义(xpath)/project/dependencyManagement/dependencyManagement/dependency/dependency
和/project/dependency/dependency
中的坐标和其他依赖项,但请注意,此时没有执行插件初始化
阶段开始,并执行绑定到该阶段的所有插件。。。以类似的方式继续执行阶段列表和项目列表。还要注意,初始化
阶段仅作为默认构建生命周期的一部分执行。它不会在默认清理或默认站点生命周期上执行,也不会在任何自定义生命周期上执行。(细心的读者会得出结论,这突出了问题所尝试的技术的另一个问题)。注意:请记住,聚合器目标在反应器中形成了一个“中断”,因此如果您要求Maven运行clean package foo:bar站点
wherefoo: