我想将版本和其他属性等属性移动到pom.properties文件。 我已经尝试使用 properties-maven-plugin ,但仍然没有取得任何成功。请让我知道如何实现这一目标。
<build>
<plugins>
<!-- Maven clean plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>pom.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>....
这是我的pom.properties文件数据..
appserver.home=D:\apache-tomcat-7.0.64
central=http://192.168.0.110:9999/repository/internal/
snapshot=http://192.168.0.110:9999/repository/stablesnapshots/
spring.version=4.0.5.RELEASE
hibernate.version=4.3.5.Final
log4j.version=1.2.17
jdk.version=1.7
context.path=Evoke
cxf.rt.frontend.jaxrs.version=3.0.0
cxf.bundle.version=2.7.10
cxf.bundle.minimal.version=2.7.10
javax.ws.rs.api.version=2.0-m10
commons.httpclient.version=3.1
jackson.version=2.0.1
jersey.multipart.version=1.18
spring.security.version=3.2.7.RELEASE
drools.version=6.2.0.Final
itext.version=4.2.0
quartz.version=2.2.1
答案 0 :(得分:0)
你试过这个吗?
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
<goal>write-project-properties</goal>
</goals>
<configuration>
<files>
<file>pom.properties</file>
</files>
<outputFile>out.properties</outputFile>
</configuration>
</execution>
</executions>
</plugin>
它应该做的伎俩。目标按照声明的顺序执行。
使用外部文件来保存依赖项版本的问题在于,当您安装或部署工件时,如果可能,POM在存储库中将如下所示:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
当其他人试图依赖此POM时,他或她如何知道${spring.version}
解决了什么?答案在外部文件中,如果我们幸运的话,它嵌入在工件(jar文件)中。要在存储库中找到工件,您需要知道${spring.version}
,因此它会成为一个catch-22问题。
现在,说过这个,Maven有自己的机制来做到这一点:
<dependencyManagement>
和<properties>
:
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
</dependencies>
...
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<!-- No need to specify version, it is inferred from the section above -->
</dependency>
</dependencies>
<properties>
<spring.version>3.0.5.RELEASE</spring.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- spring.version can be reused, because Maven properties behave like constants -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
好消息是,如果您在<dependencyManagement>
部分声明了您的版本,则可以创建仅包含这些类型条目的POM,并让其他POM从该POM导入版本。此网页描述了它的工作原理:https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies
由于POM始终应该受版本控制,因此您可以从中获得所有额外的好处:可追溯性,依赖性控制,可移植构建等。