Java pom.xml无法从外部属性文件读取属性
我有一个pom.xml,我在其中定义了一个从外部文件引用的属性- 请在下面找到我的pom.xml:-Java pom.xml无法从外部属性文件读取属性,java,xml,maven,Java,Xml,Maven,我有一个pom.xml,我在其中定义了一个从外部文件引用的属性- 请在下面找到我的pom.xml:- <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.src</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>common</name>
<url>http://maven.apache.org</url>
<scm>
<connection>scm:svn:http://127.0.0.1/dummy</connection>
<developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>
<tag>HEAD</tag>
<url>http://127.0.0.1/dummy</url>
</scm>
<properties>
<salcommon.version>${common-version}</salcommon.version>
</properties>
<repositories>
<repository>
<id>secureaccesslnk-maven</id>
<url>https://nexus-maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>secureaccesslnk-maven-release</id>
<url>https://nexus-maven-release/</url>
</repository>
<snapshotRepository>
<id>secureaccesslnk-maven-snapshot</id>
<url>https://nexus-maven-release/</url>
</snapshotRepository>
</distributionManagement>
<dependencies>
<dependency>
<groupId>com.common</groupId>
<artifactId>sal-logging</artifactId>
<version>${salcommon.version}</version>
</dependency>
<dependency>
<groupId>com.common</groupId>
<artifactId>sal-auditor</artifactId>
<version>${salcommon.version}</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.tmpl</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.tmpl</include>
</includes>
</resource>
</resources>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav-jackrabbit</artifactId>
<version>1.0-beta-7</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>common.version.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.4.201502262128</version>
<configuration>
<destFile>${sonar.jacoco.reportPath}</destFile>
<append>true</append>
</configuration>
<executions>
<execution>
<id>agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
尽管我已经定义了从外部文件读取属性的插件,但当我进行mvn clean安装时,属性${common version}在运行时不会被替换
错误-com.common的dependencies.dependency.version
e是有效版本,但为“${common version}”。@第107行第13列
我尝试了很多次上网搜索,但是没有一个解决方案对我有效。请帮助我 据我所知,你不可能做你想做的事情(即,将工件的版本外部化)。 这仅仅是因为Maven在任何插件运行之前/在您从文件中读取内容之前需要整个依赖项集(这是一种鸡和蛋的情况)
这似乎支持这种说法。不确定为什么要将jar版本外部化 若您希望所有jar文件的版本位于同一位置,并且应该在所有项目中保持一致,那个么您可以使用MyMaven提供的dependencyManagement标记
在父pom中添加所有通用依赖项,在子项目中仅指定不带版本的依赖项您可以使用BOM pom并将其用作主pom中的父项。这样,您就可以将属性保存在外部文件中 BOM POM:
<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>com.test</groupId>
<artifactId>bom</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<properties>
<common-version>3.0.1.0-SNAPSHOT</common-version>
</properties>
</project>
4.0.0
com.test
物料清单
1.0.0
聚甲醛
3.0.1.0-快照
在主POM中,添加父声明:
<parent>
<groupId>com.test</groupId>
<version>1.0.0</version>
<artifactId>bom</artifactId>
</parent>
com.test
1.0.0
物料清单
据我所知,不可能执行您试图执行的操作(即外部化工件的版本)。这仅仅是因为Maven在任何插件运行之前/在您从文件中读取内容之前需要整个依赖项集(这是一个鸡和蛋的情况)。为什么不将版本放入pom文件中?
<parent>
<groupId>com.test</groupId>
<version>1.0.0</version>
<artifactId>bom</artifactId>
</parent>