当前位置: 首页 > 知识库问答 >
问题:

Maven资源过滤

廖诚
2023-03-14

我想将构建信息写入属性文件。我找到了Maven资源过滤插件。这就是我的pom相关部分的样子:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>project.mygroup</groupId>
        <artifactId>prject</artifactId>
        <version>1.0-20190130-1</version>
    </parent>

    <artifactId>project-war</artifactId>
    <packaging>war</packaging>
    <version>1.0-20190130-1</version>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <timestamp>${maven.build.timestamp}</timestamp>
        <maven.build.timestamp.format>
        yyy-MM-dd HH:mm
        </maven.build.timestamp.format>

    </properties>

    <dependencies>
    ...
    </dependencies>

    <build>
        <finalName>project</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>
            <!-- Create war from the project -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>

            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4.3</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>    

</project>

如果startmvn清洁包构建成功,但我的build.properties文件下src/main/资源将不包含构建信息。

我的属性文件如下所示:

build.version=${pom.version}
build.date=${timestamp}
build.url=${pom.url}
build.name=${pom.name}

我做错了什么?非常感谢。

共有1个答案

马琛
2023-03-14

您必须查看目标/类。。。不在src/main/resources中

...src/main/Resources中的文件仍未过滤/触摸。

哦,不错。抱歉,我可以在目标/类文件夹中找到属性文件。但是如何从我的应用程序中读取此属性文件?

请参阅此处:-在哪里放置以及如何在基于servlet的应用程序中读取配置资源文件?

..使用“标准”java:

// assuming src/main/resources/build.properties
Properties buildProps = new Properties();
buildProps.load(
    //this is fail safe for most situations (test/web container/...), but *any classloader* could do it.
            Thread.currentThread().getContextClassLoader()
                    .getResourceAsStream("build.properties")
);
String buildDate = buildProps.getProperty("build.date");

...与(例如)Spring:

@PropertySource("classpath:/build.properties")
...
@Value("${build.date}")
String buildDate;

但是,由于您标记了java-ee(,您应该有一个非常具体的

谢谢,现在可以了,但构建时间戳不是这样的格式:yyyy-MM-dd-HH:MM我有这样的格式:1549362759203你知道吗?

哼,没有线索,到目前为止,...对我来说,它按预期工作,生成:

build.date=2019-02-05 10:55

..和(编辑的)<代码>属性。load()代码。

(也许你覆盖时间戳属性...它听起来不像是一个很好的(个人)属性名称(导致any1/事(可以)引用(s)时间戳,更好的东西像com.my.company.myVerySpecialTimestamp !?;) 和:看看目标/类/build.properties告诉你什么搞砸了:

  • maven资源过滤
  • 或属性加载(在您的代码中)
  • https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html
  • https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html
  • https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html
 类似资料:
  • 想法? 谢了。

  • 我得到了一个具有以下结构的Vaadin项目: 到目前为止,我从我的IDE(IntelliJ)构建了我的项目 然后用“构建”来包装战争- 我的资源筛选如下: 问题:当我试图用maven构建整个项目时 webapp/WEB-INF/类下的资源被跳过,它们在目标/Project/WEB-INF/类目录中,但变量是${...}(hibernate-dashboard.cfg.xml和quartz.prop

  • 我正在尝试使用maven-telte-resource-plugin在多模块maven项目中跨模块共享许多资源。不幸的是,共享的二进制资源在捆绑期间被损坏,大概是通过过滤。 我相信,由于从本地存储库中提取共享资源jar时包含损坏的二进制文件,因此在这一阶段会发生损坏。 是否有任何关闭过滤maven-远程资源插件? 目前,我的共享资源模块中的pom看起来像

  • 我正在运行一个简单的maven项目(Maven3.3.9),其中包含配置文件和资源筛选。似乎总是在默认配置文件上进行筛选。 src/main/filters(默认)中有两个配置文件:config-dev.properties和config-prod.properties(仅包含一个变量application.env=development application.env=production 和s

  • 我正在尝试使用来自pom中的配置文件的Maven资源过滤(maven-resources-plugin)将一些俄语文本发送到*. Property文件。所以,当我发送英文符号时,它工作得很好,但是当我尝试从参数(位于属性文件中)中获取俄语值时-编码中断。IntelliJ中所有文件的项目编码设置为UTF-8。在过滤文件中,俄语文本显示正常。但是当我使用getProperty方法从文件中获取它时,它会

  • 我正在使用maven-resource-plugin 2.6 vith maven 3.0.5(也尝试了3.0.4)。 我有不同的处决: 当我把下面的方块 在我的内部 我需要把它放进去 这是一个问题吗?因为当我启动构建时,我的pom.xml没有错误。