我正在编写一个 Maven 插件,基本上应该执行以下操作:
- 处理构建项目的所有类
- 创建一个描述部分源代码的文件
- 将该文件添加到构建的 jar 中(作为添加到
MANIFEST
或作为META-INF
目录中的新文件)
因为我刚刚迈出创建 Maven 插件的第一步,所以我的(可能是愚蠢的)问题是:
如何从构建项目时执行的插件访问项目的源代码(最好的方法:作为我可以轻松处理的构建路径上的包)?
到目前为止,我唯一的方法是通过类似的方式获取项目的源代码
// assuming the project exists (to exclude instance checks etc.)
MavenProject project = (MavenProject) getPluginContext().get("project");
String projectSource = project.getSourceDirectory();
然后用文件操作处理这个目录的内容。但这对我来说太丑陋了,我很确定存在更好的解决方案(我只是无法通过谷歌、maven 页面和 stackoverflow 找到它)。
最佳答案
你知道 Mojo API例如,其中包含有关当前项目的信息。这可以通过使用如下适当的标记由神经丛自动简单地注入(inject):
public class WhatEverMojo extends AbstractMojo {
/**
* The Maven project.
*
* @parameter expression="${project}"
* @required
* @readonly
*/
private MavenProject project;
}
可能是我误解了你的问题,但我建议阅读 Introduction to Plugin development .
更新: 查看其他插件可能会有所帮助,例如 apt-maven-plugin :
像下面这样的事情可能会有所帮助:
/**
* The source directories containing the sources to be processed.
*
* @parameter expression="${project.compileSourceRoots}"
* @required
* @readonly
*/
private List<String> compileSourceRoots;
complete source code is available via SVN您可以深入了解的地方。
关于java - 如何在maven插件中处理项目源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10697964/