[英]How to share configuration.properties file across multiple independent maven projects?
我有多个Maven项目。 其中之一是核心项目,其中包含许多其他项目使用的类。
- Core project
- config.properties file
- SingletonClass
- Project A
- ClassXX
- Project B
- ClassYY
我的核心项目中有一个properties.config文件。 在这个核心项目中,我有一个Singleton类,该类用于加载properties.config文件元素。
核心项目的Singleton类使用以下相对路径加载属性文件:
"/config.properties"
这意味着它将在当前工作目录中搜索该文件。 这也意味着,如果我使用单例类,则当前的工作目录将有所不同。 例如,如果项目A使用我的单例类加载配置值,它将尝试在其根文件夹中查找config.properties文件,因此将无法找到它,因为实际路径不同(根目录为核心项目)。
所以我的问题是:
有什么方法可以在多个Maven项目之间共享config.properties文件?
编辑:感谢davidxxx,最好的方法是使用
InputStream is = MySingleton.class.getResourceAsStream("/conf/singleton.properties");
为了使它起作用,我还创建了一个资源文件夹(conf)并将其设置在构建路径中。 我还必须指定要打包到我的核心项目pom.xml中的内容,如下所示:
<resources>
<resource>
<directory>src/conf</directory>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>
您可以在这里使用Properties Maven插件。 这将使您可以在外部文件中定义属性,并且插件将读取该文件。
使用此配置:
<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>my-file.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
如果有的话,在属性文件中包含以下几行:
spring-version=1.0
mysql-version=4.0.0
就像是在pom.xml中写了以下几行一样:
<properties>
<spring-version>1.0</spring-version>
<mysql-version>4.0.0</mysql-version>
</properties>
使用此插件,您将获得以下好处:
这意味着它将在当前工作目录中搜索该文件。 这也意味着如果我使用单例类,则当前的工作目录将有所不同。
问题是您用来检索属性文件的方式。
如果需要将单例作为JAR中的依赖项导出,则不必使用当前工作目录来加载属性文件。
属性文件应位于类路径中,并且单例类可以使用其类加载器来获取资源。
例如,假设属性位于添加到运行时类路径的conf文件夹中,则在您的singleton类中,您可以编写类似的内容来加载资源:
InputStream is = MySingleton.class.getResourceAsStream("/conf/singleton.properties");
通过这种方式,这将在两种情况下均有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.