pom.xml无法读取maven中的pom.properties文件

时间:2015-11-05 12:30:15

标签: java maven

我想将版本和其他属性等属性移动到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            

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

...
<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始终应该受版本控制,因此您可以从中获得所有额外的好处:可追溯性,依赖性控制,可移植构建等。