当前位置: 首页 > 面试题库 >

是否存在生成POM.xml文件的Java类?

楚俊杰
2023-03-14
问题内容

在我的工作项目中,最近有人要求我通过java类生成POM文件。问题在于,我对Maven非常非常陌生(就像去年12月以来)。

我需要的是给出所有必要数据的,以某种方式生成xml文件(一个pom文件,但是如果我可以配置任何xml创建代码就可以的代码)的代码,因此他们不需要手动编写它。我不知道自己是否在解释自己,但问题是,是否存在任何使用给定数据生成或构造POM文件的库或类?如果不是很好,我只是不想浪费更多时间寻找不知道它是否存在的东西,或者只是声明一个POM对象那么简单,然后做一个琐碎的Document
d = generatePom(POM p)。由于没有人抱怨编写POM文件有多困难,我认为应该有一种简单的方法来处理它们,但是我认为我已经迷失了很多API
Javadoc,无法找到回头路。

我的想法是,如果没有代码,那就是使用XML生成器搜索POM字典(以覆盖所有元素)并使用给定的POM对象(我之前已经填充了提供的数据)创建xml文件。例如JDOM,XOM或XStream。如果没有任何班级对此事有任何想法,将不胜感激(例如“嘿!您正在做错了”)。

PS:我已经读到Eclipse项目正在做一些Maven事情,并且它具有一个API,该API会为您拥有的实际项目生成pom.xml文件。如果我可以覆盖输入数据或其他东西,那将是一件好事。

谢谢大家!


问题答案:

这取决于您要执行的操作。如果只想为肯定类型的新项目创建POM,最好的方法是通过Maven原型(您可以使用所需的模板创建自己的原型)。

如果确实需要以编程方式编写POM,则可以使用以下命令:

import org.apache.maven.model.*;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
...
Model model = new Model();
model.setGroupId( "some.group.id" );
...
new MavenXpp3Writer().write( w, model );

…其中w是java.io.Writer,您添加了所有必要的异常处理。

Javadoc在这里:http : //maven.apache.org/ref/2.2.1/maven-
model/apidocs/index.html

要访问此API,您应添加以下依赖项:

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-model</artifactId>
  <version>2.2.1</version>
</dependency>

也有相应的读取API,但请记住,它不会执行所有Maven操作,例如继承和插值(为此需要更高级的API使用)。



 类似资料:
  • 嗨,我有一个包含两个库模块的gradle android项目: 所以LibB依赖于LibA。因此,LibB 的 build.gradle 文件如下所示: 如您所见,我想为gradle项目中的每个库模块生成. aar文件。到目前为止还不错,但是生成对LibA具有正确依赖关系的pom.xml文件并没有像预期的那样工作: pom。LibB的xml文件如下所示: 有没有办法在生成的pom文件中指定LibA

  • 问题内容: 我想知道是否存在用于Java 的 伪数据生成器 。在Perl中,存在一个名为Ruby 的JavaScript 移植端口。有人知道Java 的 伪造数据生成器 ,它可以提供随机名称,电话号码,邮政信箱号码等。 问题答案: 如果您使用的是Hibernate,请尝试使用HibernateMock。 也: ThinkUI 膨润土

  • 问题内容: 我阅读了JVM内存模型,并对以下内容感到困惑: JVM是否将.class实例存储在其内存中。如果是,则在哪个区域。 就像在加载类后,JVM生成了机器级代码,然后开始执行机器代码指令,然后仅在堆上创建对象,并填充了方法区域。 perm gen等区域存储字节码还是机器级代码? 烫发与方法面积 我真的很感谢您对此主题的任何帮助。 谢谢。 问题答案: 1)文件将在加载时存储在permgen存储

  • 我看了一遍文件,没有发现任何关于它的用途的东西。

  • 问题内容: 尝试检查我要读取的文件是否存在。 问题答案: 这是另一种方法: 包装的用途和功能: p_DirName in varchar2, – schema object name p_FileName in varchar2 ) return number is l_file_loc bfile; begin l_file_loc := bfilename(upper(p_DirName),

  • 问题内容: 在打开文件以Java读取之前,如何检查文件是否存在?(相当于Perl的)。 关于SO的唯一类似问题涉及写入文件,因此使用回答了该问题,这显然不适用于此处。 如果可能的话,我宁愿使用真正的API调用返回,而不是使用“调用API来打开文件并在引发异常时捕获并在文本中检查’无文件’的情况下捕获”,但是我可以接受后者。 问题答案: 使用: