【问题标题】:Dynamically adding mojo-generated code to source path将 mojo 生成的代码动态添加到源路径
【发布时间】:2012-08-09 12:37:13
【问题描述】:

我编写了一个 mojo,它可以生成代码并将其粘贴在 {root}/target/generated-sources/foo 下。当我执行时:

mvn clean install

我收到错误消息,表明生成的源文件未包含在构建路径中(生成的文件在那里,但在编译阶段没有被拾取)。我从this answer 了解到,我需要动态添加 {root}/target/generated-sources/foo 作为 POM 的源目录。问题是,我无法找到有关如何执行此操作的任何信息。

作为备用计划,我打算使用 Build Helper Maven 插件,但我希望尽可能在我的 mojo 中自动执行此操作。

【问题讨论】:

    标签: java maven pom.xml mojo generated-code


    【解决方案1】:

    我更喜欢将此添加到我的 Mojo 中:

    /**
      * The current project representation.
      * @parameter expression="${project}"
      * @required
      * @readonly
      */
     private MavenProject project;
    
    /**
     * Directory wherein generated source will be put; main, test, site, ... will be added implictly.
     * @parameter expression="${outputDir}" default-value="${project.build.directory}/src-generated"
     * @required
     */
    private File outputDir;
    

    显然您可以更改default-value 以匹配您自己的模式。

    然后在execute()方法中:

    if (!settings.isInteractiveMode()) {
        LOG.info("Adding " + outputDir.getAbsolutePath() + " to compile source root");
    }
    project.addCompileSourceRoot(outputDir.getAbsolutePath());
    

    【讨论】:

    • 谢谢。我已经有了第一位(即输出位置属性)。这是我试图开始工作的第二位 - 添加编译源根。 project 对我来说是未定义的。调查它,看看它是否是一个 Maven 版本的东西,或者其他什么。但如果您有任何想法,请告诉我。
    • @KentBoogaart 添加了MavenProperty 属性,该属性将被自动拾取并准备好使用。
    猜你喜欢
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2016-05-21
    • 2013-06-07
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多