我想将构建信息写入属性文件。我找到了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}
我做错了什么?非常感谢。
您必须查看目标/类。。。不在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
告诉你什么搞砸了:
想法? 谢了。
我得到了一个具有以下结构的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没有错误。