我有一个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/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>
common.version.properties详情如下: -
common-version=3.0.1.0-SNAPSHOT
即使我已经定义了插件来从外部文件中读取属性。当我在进行mvn clean install时,属性$ {common-version}在运行时没有被替换
对于com.common,Error - dependencies.dependency.version' 有效版本,但是'$ {common-version}'。 @第107行,第13栏
我试图在网上搜索很多,但没有一个解决方案适合我。请帮忙!
答案 0 :(得分:1)
不确定为什么要外化jar版本。
如果你想要所有jar文件的版本在同一个位置并且应该在所有项目中保持一致,那么你可以使用我的maven提供的dependencyManagement标签。
在父pom中添加所有常见依赖项,在子项目中仅指定不带版本的依赖项
答案 1 :(得分:1)
据我所知,你不可能做你想做的事情(即外化人工制品的版本)。这只是因为Maven需要在任何插件运行之前/在您从文件中读取内容之前设置整个依赖项(这是鸡与鸡蛋的情况)。
答案 2 :(得分:0)
据我所知,你不可能做你想做的事情(即外化人工制品的版本)。 这只是因为Maven需要在任何插件运行之前/在您从文件中读取内容之前设置整个依赖项(这是鸡与鸡蛋的情况)。
这thread似乎支持这种说法。
答案 3 :(得分:0)
您可以使用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>
在主POM中,添加父声明:
<parent>
<groupId>com.test</groupId>
<version>1.0.0</version>
<artifactId>bom</artifactId>
</parent>