Java 从属性文件访问Maven Pom变量
我正在开发一个定制的maven插件。当我写作时:Java 从属性文件访问Maven Pom变量,java,maven,pom.xml,maven-plugin-development,Java,Maven,Pom.xml,Maven Plugin Development,我正在开发一个定制的maven插件。当我写作时: ${project.version} 在我的pom文件中,我可以得到它的值,但是如果我写入属性文件,有没有办法: project.version = ${project.version} 这将正确设置project.version值,如何在Java代码中实现它 PS:我不在Mojo中使用注释,我也不想在Java代码中使用变量,因为用户应该在属性文件中定义为我的变量,我不能更改核心Java代码来更改内容。如果使用注释,请参阅 使用 用docle
${project.version}
在我的pom文件中,我可以得到它的值,但是如果我写入属性文件,有没有办法:
project.version = ${project.version}
这将正确设置project.version值,如何在Java代码中实现它
PS:我不在Mojo中使用注释,我也不想在Java代码中使用变量,因为用户应该在属性文件中定义为我的变量,我不能更改核心Java代码来更改内容。如果使用注释,请参阅 使用 用doclet
/**
* The Maven project to act upon.
*
* @parameter expression="${project}"
* @required
*/
private MavenProject project;
然后project.getVersion()您只需在
中添加
,然后启用所需的任何筛选即可使用。您可以像我在该函数中所做的那样,读取并保存pom.xml
中的任何属性:
/**
* Save a property in a pom.xml
*
* @param propertyName Name of the property
* @param value New value for the property
*/
public static void saveProjectProperty(String propertyName, String value)
{
Model model = null;
FileReader reader = null;
MavenXpp3Reader mavenreader = new MavenXpp3Reader();
try
{
reader = new FileReader("pom.xml");
model = mavenreader.read(reader);
MavenProject project = new MavenProject(model);
while (project.getParent() != null)
{
project = project.getParent();
}
project.getProperties().put(propertyName, value);
try (FileWriter fileWriter = new FileWriter("pom.xml"))
{
project.writeModel(fileWriter);
}
}
catch (IOException ex)
{
LOG.severe("Error saving pom.xml");
}
catch (XmlPullParserException ex)
{
LOG.warning("Error reading pom.xml");
}
}
为了能够使用JVM中非本机的类别,您应该添加以下依赖项:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0</version>
</dependency
org.apache.maven
maven模型
2
org.apache.maven
马文项目
2
这意味着我应该为属性文件中的每个新条目定义一个新变量。对于pom文件,maven替换了表达式,我想在我的插件中完成这项工作,从属性文件中读取并获取表达式的值,或者,我想让maven获取表达式的值(不使用任何其他插件,因为我正在开发我的插件)在属性文件中?这是在maven插件中获取MavenProject的方法。如果你想对资源插件之类的文件进行过滤,你必须看一下该组件有没有一个示例如何使用它?它会将所有内容写入另一个目录吗?有什么可以避免的吗?你可以配置一些包含和/或排除来选择哪些资源。有关如何操作的任何提示:?
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-model</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.0</version>
</dependency