properties-maven-plugin的write-project-properties目标执行失败求助
解决Maven properties-maven-plugin输出属性文件时的参数错误问题
这个报错的核心原因很明确:你在执行write-project-properties目标时,没有正确指定outputFile参数,或者参数值(比如文件路径)无效。下面给你两种可行的解决方式,以及后续Java读取属性文件的小技巧:
方式一:直接通过命令行指定参数
如果你习惯用命令行临时执行导出操作,必须在命令里明确加上-DoutputFile参数指定输出文件的路径。比如把属性导出到项目的target目录下(推荐放这里,避免污染源码目录):
mvn org.codehaus.mojo:properties-maven-plugin:1.0-alpha-2:write-project-properties -DoutputFile=target/project.properties
注意:路径可以是相对路径(相对于项目根目录)或者绝对路径,确保当前用户对目标路径有写入权限。
方式二:把插件配置到pom.xml中(更便捷)
如果需要频繁执行这个操作,建议把插件配置到项目的pom.xml里,绑定到合适的Maven生命周期阶段,这样执行常规构建命令时会自动生成属性文件:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0-alpha-2</version> <executions> <execution> <id>export-project-properties</id> <!-- 绑定到process-resources阶段,执行mvn compile时会自动生成 --> <phase>process-resources</phase> <goals> <goal>write-project-properties</goal> </goals> <configuration> <!-- 使用Maven内置变量指定输出路径,适配不同环境 --> <outputFile>${project.build.directory}/project.properties</outputFile> <!-- 可选:只导出你需要的特定属性,避免生成冗余内容 --> <!-- <properties> <property>project.version</property> <property>project.groupId</property> <property>custom.property</property> </properties> --> </configuration> </execution> </executions> </plugin> </plugins> </build>
配置完成后,执行mvn process-resources或者mvn compile,就能在target目录下看到生成的project.properties文件了。
后续Java代码读取属性文件的示例
生成属性文件后,Java代码可以通过java.util.Properties类来读取:
import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; public class AppPropertyReader { public static void main(String[] args) { Properties projectProps = new Properties(); // 注意路径要和Maven生成的路径一致,如果是打包后的程序,建议把属性文件放到resources目录 try (FileInputStream inputStream = new FileInputStream("target/project.properties")) { projectProps.load(inputStream); // 读取示例属性 String projectVersion = projectProps.getProperty("project.version"); String groupId = projectProps.getProperty("project.groupId"); System.out.println("当前项目版本:" + projectVersion); System.out.println("项目GroupId:" + groupId); } catch (IOException e) { System.err.println("读取属性文件失败:" + e.getMessage()); e.printStackTrace(); } } }
额外小提示
- 你使用的
1.0-alpha-2版本比较老旧了,如果遇到其他兼容性问题,可以尝试升级到最新稳定版(比如1.2.1),只需要修改pom.xml或命令行里的版本号即可。 - 如果需要把属性文件打包到最终的jar/war中,可以把
outputFile路径改成${project.build.outputDirectory}/META-INF/project.properties,这样Java代码可以通过类加载器读取,不需要依赖绝对路径。
内容的提问来源于stack exchange,提问作者Bhuvanesh Mani
相关产品推荐
相关产品推荐

