【问题标题】:define additional source directory in maven在 Maven 中定义额外的源目录
【发布时间】:2012-05-30 21:54:06
【问题描述】:

我从 wsdl 文件生成 Java 源代码。这些源不受版本控制(但 wsdl 受)。我们在maven中使用cxf-codegen-plugin,生成的类在<sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>中生成。

这在 Maven 中一切正常。

我必须将此目录定义为 Intelij Idea 中的附加源目录。 (target通常被排除在外)。

但是每次我将maven项目重新导入InteliJ Idea(由于pom更改),我都必须手动编辑Idea中的项目结构并重新定义添加源目录。

有什么方法可以在 maven 中定义这个额外的源目录,以便 Idea 在重新加载时选择它,或者告诉 Idea 不要忘记手动源目录定义?

【问题讨论】:

  • @CrazyCoder 应该先检查他们的 wiki。 “生成的来源”成功了。谢谢。您可以将其发布为答案,以便我接受吗?

标签: maven intellij-idea code-generation


【解决方案1】:

IntelliJ IDEA Maven FAQ, Generated Sources 部分描述了这种情况:

在重新导入项目时指定源根目录。
您可以选择以下选项之一:

  • 自动检测 这是默认选项。当您选择此选项时,IntelliJ IDEA 会自动检测生成源的位置。 IntelliJ IDEA 还检测将哪个目录标记为源根目录。但是,IntelliJ IDEA 仅在 target/generated-sources 和 target/generated-sources/* 目录中搜索生成的源。

  • target/generated-sources 此选项使您可以手动将目录标记为源根目录。

  • “target/generated-sources”的子目录 此选项使您可以手动将子目录标记为源根目录。

  • 不检测 此选项可让您跳过检测过程。

【讨论】:

    【解决方案2】:

    查看<add-source> 构建目标(参见示例here

    引用:

    <plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>build-helper-maven-plugin</artifactId>
     <version>1.4</version>
     <executions>
      <execution>
       <id>add-wsdl-source</id>
       <phase>generate-sources</phase>
       <goals>
        <goal>add-source</goal>
       </goals>
       <configuration>
        <sources>
         <source>${basedir}/src-generated/src</source>
        </sources>
       </configuration>
       <!-- [...] -->
      </execution>
     </executions>
    </plugin>
    

    【讨论】:

    • 这确实会在目标文件夹之外生成源代码,我可以构建项目。不幸的是,Idea 仍然需要手动定义这个额外的文件夹,因此我的问题仍然存在。
    【解决方案3】:

    您可以将(外部)源目录定义为您的模块的依赖项。 Project Structure -&gt; Modules -&gt; Depenencies。在那里你必须添加一个新的JAR or Directory 依赖项。

    【讨论】:

    • 谢谢。在 pom 重新加载后,Idea 确实保留了此更改。 Java 文件就是这样被识别的。不幸的是,Idea 无法解析对此类目录中文件的类引用。奇怪,我再调查一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2016-06-01
    相关资源
    最近更新 更多