Spring Boot maven的全局属性文件

pobjuy32  于 2022-11-23  发布在  Spring
关注(0)|答案(1)|浏览(157)

我看过很多例子说,通过使用插件从Maven的外部文件中获取属性值是可能的。我也试过同样的方法,但没有成功,

<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>${project.basedir}/src/main/resources/sample.properties</file>
                </files>
            </configuration>
        </execution>
    </executions>
</plugin>

该文件在该位置上存在,我是否遗漏了什么?
下一个问题是,我在上面的项目中引用了母公司回购协议,有没有办法把属性文件保存在那里?这样我就可以在其他项目中引用了。
先谢了

hkmswyz6

hkmswyz61#

  • properties-maven-plugin* 的目的是过滤(也称为插入)应用程序属性,使其具有maven项目外部的值。因此,此类应用程序属性只能在应用程序中使用,而不能在maven项目中使用。也就是说,您不能在maven项目模型中使用外部属性值,例如依赖版本。

根据评论中的要求,考虑以下示例项目。

$ find . -type f
./external.properties
./pom.xml
./src/main/resources/app.properties

$ cat pom.xml 
<?xml version="1.0" encoding="UTF-8"?>
<project>
    <modelVersion>4.0.0</modelVersion>

    <properties>
        <prop>default</prop>
    </properties>

    <groupId>test</groupId>
    <artifactId>test</artifactId>
    <version>0.0.1</version>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>app.properties</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.1.0</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                            <files>
                                <file>external.properties</file>
                            </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

$ cat src/main/resources/app.properties 
prop=${prop}

$ cat external.properties 
prop=not-default

$ mvn process-resources -q
$ cat target/classes/app.properties 
prop=not-default

请注意prop属性是如何将其值更改为non-default的。external.properties文件既可以指定相对路径(作为项目结构的一部分),也可以指定绝对路径(项目结构内外的任意位置)。希望这对您有所帮助。

相关问题