web-dev-qa-db-ja.com

生成されたソースフォルダーでIntellijを使用できない

関連する質問 IntelliJ IDEAおよび/またはMavenでJava jaxb2-maven-pluginを使用して生成されたソースコードを自動的に追加するためにMavenを設定しますか?

target/generated-sourcesの下にソースを生成するカスタムプラグインがあります(ここにはツール名はありません)。そのため、target/generated-sources/com/mycompany...などのソースを取得します。

この形式はまったく変更できないため、Intellijを構成してソースフォルダーとして追加できます。今のところ、Intellijがtarget/generated-sources/comをソースフォルダーとして追加していることがわかります。

プラグインを設定するオプションがないことに注意してください!

UPDATE 1:生成されたソースをツール名フォルダーの下に置く必要があるという事実に同意しません。それは良い慣習かもしれませんが、ジェネレーターが1つしかない場合、そこに置く必要はありませんか?繰り返しますが、pom.xmlにはresourcesセクションがあり、target/generated-sourcesをソースフォルダーとして扱う必要があることを明確に示しています。これはEclipseで完全に正常に機能するため、Intellijが私の設定を尊重しない理由はわかりません。

TL; DR-> target/generated-sourcesのリソースセクションにpom.xmlを配置すると、Intellijがクラスパスにtarget/generated-sources/comを追加することに熱心になります。

68
Kannan Ekanath

プロジェクト構造を変更するだけで、そのフォルダーを「ソース」ディレクトリとして追加できます。

プロジェクト構造→モジュール→generated-sourcesフォルダーを作成し、sourcesフォルダーにします。

または:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>1.4</version>
    <executions>
        <execution>
            <id>test</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>add-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>${basedir}/target/generated-sources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>
108
DaShaun

私はMaven(SpringBootアプリケーション)ソリューションを使用しています:

  1. プロジェクトフォルダーを右クリック
  2. Mavenを選択します
  3. ソースの生成とフォルダーの更新を選択します

その後、Intellijは生成されたソースをプロジェクトに自動的にインポートします。

35
Mehmet Hanoğlu

Gradleでは、gradle設定を更新するたびにプロジェクト設定がクリアされます。代わりに、build.gradleに次の行(または同様の行)を追加する必要があります。私はkotlinを使用しています。

sourceSets {
    main {
        Java {
            srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
        }
    }
}
17
zhywu

修正

Project Structure-Modules-Source Foldersに移動し、target/generated-sources/antlr4/com/mycompany-プロパティの編集をクリックし、パッケージのプレフィックスcom.mycompanyに設定します。

これがまさに、ソースディレクトリにPackage prefixを設定できる理由です。


異なるが関連する問題 ここ

13

そのプラグインを書いた人は誰もが大きな時間を台無しにした。それはそれを行う方法ではありません!

回避策は巨大なハックであり、プラグイン開発者に彼のバグを認識させます。

申し訳ありませんが、それが唯一のことです。


プラグインの実行直後のハックです。antrunプラグインを使用してディレクトリを別の場所に移動します。

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
      <execution>
        <phase>process-sources</phase>
        <configuration>
          <target>
            <move todir="${project.build.directory}/generated-sources/toolname/com"
                  overwrite="true">
                <fileset dir="${project.build.directory}/generated-sources/com"/>
            </move>
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
</plugin>

この例では、toolnameは、コードを作成したプラグインを一意に識別するものに置き換えられ、comは作成されたパッケージのルートを表します。複数のパッケージルートがある場合、おそらく複数の<move>タスク。

しかし、プラグインがフォルダーをソースフォルダーとして追加すると、ユーザーは混乱します。

4

プロジェクトをインポートするときに、数か月前にEclipseで同じ問題が発生しました。今、私はintelliJでも同じことをしました。 IntelliJでこれを解決するのに誰かが私を助けた方法は次のとおりです:

メニュー=>表示=>ツールウィンドウ=> Mavenプロジェクトspring_user値=>実行構成で、クリーンインストールを選択します。これにより、クリーンインストールが実行され、この後、クラスが表示されるはずです enter image description here

1
ElizabethM

フォルダを移動するソース生成フェーズにステップを追加できますか?