【问题标题】:Dagger - specify generated source file directory when building with mavenDagger - 使用 maven 构建时指定生成的源文件目录
【发布时间】:2015-01-17 23:22:20
【问题描述】:

这可能只是一个专家问题。我刚刚开始使用 Dagger 2,它使用 javax.annotation.processing 根据注释生成源。

当我使用我的 IDE、IntelliJ 并构建项目 (Build - Rebuild Project) 时,它会将生成的源文件(即 $$Factory 和 Dagger_)放在:

target/generated-sources/annotations

IntelliJ 自动将其声明为源根目录,因此使用生成的类不会被标记为错误:

// Dagger_CoffeeApp$$Coffee is a generated class
Coffee coffee = Dagger_CoffeeApp$Coffee.builder().build();

问题是,如果我通过 maven 从命令行构建:

mvn clean compile

生成的源位于:

target/classes

因此这些文件在我的 IDE 中被标记为错误。我可能可以简单地将目标/类添加为源根目录,但理想情况下,我希望从命令行编译以与我的 IDE 保持一致。 maven 是否有一些参数来指定生成的源文件在哪个目录中生成?

【问题讨论】:

    标签: maven annotations maven-3 dagger dagger-2


    【解决方案1】:

    随着Dagger前缀类的生成,你应该设置eclipse在构建过程中通过configuringdagger-compiler的jar放到你项目的工厂路径中来生成它们

    要使用 maven 自动执行此过程,请参阅使用 apt-maven-pluginquestion

    【讨论】:

      【解决方案2】:

      您可以尝试使用 maven-processor-plugin 为注释处理器指定特定目标,可能是这样的:

      <plugin>
        <groupId>org.bsc.maven</groupId>
        <artifactId>maven-processor-plugin</artifactId>
        <version>1.0-SNAPSHOT</version>
        <executions>
          <execution>
            <id>process</id>
            <goals>
              <goal>process</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <outputDirectory>target/generated-sources/annotations</outputDirectory>
            </configuration> 
          </execution>
        </executions>
      </plugin>
      

      我尚未对此进行测试,但它可能会起作用。来自这个问题的想法:Setting the generated source directory for annotation processors in Maven

      【讨论】:

        猜你喜欢
        • 2014-05-19
        • 2012-05-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 2016-01-04
        • 2020-10-29
        • 2019-05-18
        相关资源
        最近更新 更多