java - 如何在maven插件中处理项目源

标签 java maven maven-plugin

我正在编写一个 Maven 插件,基本上应该执行以下操作:

  1. 处理构建项目的所有类
  2. 创建一个描述部分源代码的文件
  3. 将该文件添加到构建的 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/

相关文章:

java - 更改为 Maven 依赖项后,特殊字符变得困惑

maven - 如何从现有原型(prototype)创建 Maven 原型(prototype)

maven-2 - Maven的jetty插件SSL配置问题

java - 为什么不能在 if 中初始化变量

java - 尝试在单击时更改 TextView 的文本时出现 NullPointerException

java - 如何在 Jython 和 PY4J 跨平台中使用 NLTK?

java - Zulu 与 Java 11 和 JavaFX Docker 镜像

java - 不从发布版本下载 jar

java - 为什么我的机器人屏幕截图方法捕获黑屏?

java - Cassandra 连接失败