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

Dom*_*ber 6 java maven-plugin maven

我正在编写一个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();
Run Code Online (Sandbox Code Playgroud)

然后使用文件操作处理此目录的内容.但这对我来说似乎很难看,我确信存在更好的解决方案(我只是无法通过google,maven页面和stackoverflow找到它).

khm*_*ise 6

您知道Mojo API,其中包含有关当前项目的信息.这可以简单地通过使用适当的标记自动包含plexus,如下所示:

public class WhatEverMojo extends AbstractMojo {

    /**
     * The Maven project.
     *
     * @parameter expression="${project}"
     * @required
     * @readonly
     */
    private MavenProject project;
}
Run Code Online (Sandbox Code Playgroud)

可能是我误解了你的问题,但我建议阅读插件开发简介.

更新:看看apt-maven-plugin等其他插件可能会有所帮助:

像下面这样的东西可以帮助:

/**
 * The source directories containing the sources to be processed.
 * 
 * @parameter expression="${project.compileSourceRoots}"
 * @required
 * @readonly
 */
private List<String> compileSourceRoots;
Run Code Online (Sandbox Code Playgroud)

完整的源代码SVN通过可以在那里你可以去深入探讨.