如何在Maven中读取外部属性文件


127

有谁知道如何在Maven中读取x.properties文件。我知道有多种方法可以使用资源过滤来读取属性文件并从中设置值,但是我想要在pom.xml中使用以下方法:

<properties file="x.properties"> 

</properties>

对此进行了一些讨论: Maven外部属性


如果您只有几个值,并且不同的用户将需要不同的值,请考虑将值放在中settings.xml
拉德瓦尔德

Answers:


95

1
我认为这就是我要寻找的东西,但在Maven存储库中找不到1.0-SNAPSHOT,但有一个发布版本: mvnrepository.com/artifact/org.codehaus.mojo/… <dependency> <groupId> org.codehaus .mojo </ groupId> <artifactId> properties-maven-plugin </ artifactId> <version> 1.0-alpha-1 </ version> </ dependency>
Dougnukem,2009年


当前版本:<的groupId> org.codehaus.mojo </的groupId> <artifactId的>属性- Maven的插件</ artifactId的> <版本> 1.0-α-2-SNAPSHOT </版本>从snapshots.repository.codehaus.org
Huluvu424242 2011年

2
答案中的链接已更新为@JesseGlick的新链接
Jon Adams

1
我在Windows上与此插件有问题。如果有人也有问题,请尝试kuali
fnst

56

使用建议的Maven属性插件,我能够读取用于版本化版本的buildNumber.properties文件。

  <build>    
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>properties-maven-plugin</artifactId>
        <version>1.0-alpha-1</version>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>read-project-properties</goal>
            </goals>
            <configuration>
              <files>
                <file>${basedir}/../project-parent/buildNumber.properties</file>
              </files>
            </configuration>
          </execution>
        </executions>
      </plugin>
   </plugins>

9
您可以显示buildNumber.properties文件的内部吗?谢谢!
victorio

感谢您的工作示例。可是,为什么我得到了一个错误Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
WesternGun

当我在</ build>之后且在常规Maven插件之前的<plugins>下输入此<plugin>部分时,出现此错误:Plugin 'execution' not covered by lifecycle configuration: org.codehaus.mojo:properties-maven-plugin:1.0-alpha-1:read-project-properties (execution: default, phase: initialize)
PraNuta

@BorisBrodski您可以显示buildNumber.properties文件的内部吗?看来您删除了一些细节。
Moustafa Mahmoud

@MoustafaMahmoud为什么是我?那不是我的答案:)但是我推测,它看起来像是“ my.great.product.version = 1.0.0”。
鲍里斯·布罗德斯基

5

这个类似问题的答案描述了如何扩展属性插件,以便它可以将远程描述符用于属性文件。描述符基本上是一个包含属性文件的jar工件(属性文件包含在src / main / resources下)。

描述符作为对扩展属性插件的依赖项添加,因此它位于插件的类路径上。该插件将在类路径中搜索属性文件,将文件的内容读取到Properties实例中,并将这些属性应用于项目的配置,以便可以在其他地方使用它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.