我正在创建一个自定义maven插件。在其中一个mojo中,我使用以下代码段从XML文件中读取一个Xpp3Dom对象:
File pluginsFile = new File(
"absolute-path-to-file/plugins.xml");
Xpp3Dom Xpp3DomObject = new Xpp3Dom("plugins");
try {
FileReader reader = new FileReader(pluginsFile);
Xpp3DomObject = Xpp3DomBuilder.build(reader);
reader.close();
} catch (Exception e) {
// TODO throw exception
}
我正在读取的XML文件(plugins.XML)存储在maven插件本身的src/main/resources中。我的问题是,如何指向该XML文件而不显式说明该文件的绝对路径?
需要明确的是:我希望这个文件在我的maven插件的目录下。它不能在maven插件之外,因为它是maven插件的必要部分,不应该被使用此插件的其他maven项目更改。
我在Maven Mojo中搜索了一个变量/方法,它可以为我提供Maven插件本身的绝对位置。如果我得到了这个值,那么我可以把位置作为变量/src/main/resources/plugins.xml的值。但我找不到这样的变量。我还尝试了一种方法,将属性从Maven插件POM传递到它的一个mojo,这样我就可以传递
project.build。目录,但找不到方法。
需要明确的是:我想访问maven插件目录下的文件,在其Mojos之一中。
任何建议都会有所帮助。
匿名用户
我认为读取自己插件的一些资源文件的最简单形式是通过getResourceAsStream()
API,因为插件迟早会作为JAR交付,然后src
目录将消失,只剩下类路径资源:
try (InputStream input=getClass().getClassLoader().getResourceAsStream("plugins.xml")){
try(Reader reader=new InputStreamReader(input));
{
Xpp3Dom Xpp3DomObject = Xpp3DomBuilder.build(input);
} catch (Exception e) {
...
}
}
无论如何,这样的话,类路径的其他JAR就有可能包含插件。xml文件。为了避免(或至少减少)这种风险,您应该将其打包:
src\
main\
resources\
foo\
bar\
MyMojo.java
plugins.xml
…在这种情况下,您必须通过getClass()读取它。getResourceAsInputStream()。
我的问题是:根据这些参数,我可以在哪里归档标准maven插件的API fefinition?
问题内容: 我目前正在对Jenkins Pipeline插件(以前称为Workflow插件)进行一些评估。阅读文档后,我发现当前无法使用以下方法检索工作空间路径 : 以下变量当前在工作流脚本中不可用: NODE_LABELS 工作空间 特定于SCM的变量,例如SVN_REVISION 还有其他方法如何获取当前工作空间的绝对路径吗?我需要运行一些测试,该测试又得到一些参数(某些可执行文件的绝对路径)
我想从maven资源目录(src/main/resources)中读取我的属性文件。属性文件的路径称为: 该文件名为test。财产。我使用了JSF2.2、Eclipse和Java Web项目,webapp在Tomcat7上运行 我在mavenpom.xml文件中写道: 并在我的java文件中写入:Properties prop=new Properties(); 但是它没有找到属性文件。我可以读出
问题内容: 我正在开发一个Maven插件。我似乎很难弄清楚,从执行MOJO的项目中获取POM信息的好方法是什么? 例如,如果我在另一个Maven项目中执行我的mojo,我想获取项目名称或其他一些参数。 还有一件事,在AbstractMojo.java类中有一个上下文MAP,有私有Map pluginContext,如果我错了,有人可以纠正我,但这应该用于在mojos之间传递信息吗? 问题答案: 您
我有一个带有两个maven插件模块的mutli项目:base和child()。孩子依赖基础。 带POM: 基本编译正确,子级通过编译但失败: 未能在项目plugin-child上执行goal org.apache.maven.plugins:maven-plugin-plugin:3.4:descriptor(default-descriptor):mojo扫描器的API与此插件版本不兼容。请检查
有没有办法使用来获取JAR目录中的“子资源”列表? 但我却找不到办法获得“孩子”资源。