获取Java中的Maven配置文件名称或ID

eufgjt7s  于 2023-01-20  发布在  Maven
关注(0)|答案(1)|浏览(194)

我有一个java项目(没有spring),我试图获取java中的当前配置文件,但我找不到如何实现
我尝试使用:

Properties prop = new Properties();
//      ClassLoader loader = Thread.currentThread().getContextClassLoader();
//      InputStream stream = loader.getResourceAsStream("/config/archicon.properties");
    try {
        prop.load(Archicon.class.getClassLoader().getResourceAsStream("config/archicon.properties"));
    
        System.out.println(prop.getProperty("profile.na"));
        System.out.println(prop.getProperty("profile.me"));
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

这是我的照片

<properties>
    <profile.name>${current.profile}</profile.name>

以及:

<profile>
    <id>turchia</id>
    <activation>
        <activeByDefault>false</activeByDefault>
    </activation>
    <properties>
        <current.profile>-- TURCHIA --</current.profile>
    </properties>
</profile>

这是我的网站app.properties:

profile.na= ${profile.name}
profile.me= ${current.profile}

这是我的过滤器资源:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.1.0</version>
    <executions>
        <execution>
            <id>copy-resources-1</id>
            <configuration>
                <goals>
                    <goal>write-project-properties</goal>
                </goals>
                <resources>
                    <resource>
                        <directory>src/main/resources/config</directory>
                        <filtering>true</filtering>
                        <includes>
                            <include>*.properties</include>
                        </includes>
                        <targetPath>${project.basedir}/target</targetPath>
                    </resource>
                </resources>
            </configuration>
        </execution>
        <execution>
            <id>copy-resources-2</id>
            <configuration>
<!--                <warSourceDirectory>${project.basedir}/WebContent</warSourceDirectory> -->
                <webXml>${current.webXml}</webXml>
                <failOnMissingWebXml>false</failOnMissingWebXml>
<!--                <warSourceExcludes>css/</warSourceExcludes> -->
                <webResources>
                    <resource>
                        <directory>${jbossWeb.folder}/${current.jbossWeb}</directory>
                        <targetPath>WEB-INF</targetPath>
                    </resource>
                </webResources>
            </configuration>
        </execution>
    </executions>
</plugin>

但它不起作用,还有别的建议吗

5lhxktic

5lhxktic1#

我不知道你为什么要在war插件的执行中添加资源配置。
过滤可以发生在所有类型的构建中,而不仅仅是在打包战争时,所以我将在pom中添加以下内容。(我只是添加外部标记来显示在层次结构中放置它的位置,它不是一个完整的pom)

<project>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>application.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>false</filtering>
                <excludes>
                    <exclude>application.properties</exclude>
                </excludes>
            </resource>
        </resources>
    </build>
</project>

我必须在部分中包含资源,所以只有 application.properties 被过滤,但其他资源也会被复制,就像现在这样。

相关问题