関連する質問 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
を追加することに熱心になります。
プロジェクト構造を変更するだけで、そのフォルダーを「ソース」ディレクトリとして追加できます。
プロジェクト構造→モジュール→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>
私はMaven(SpringBootアプリケーション)ソリューションを使用しています:
その後、Intellijは生成されたソースをプロジェクトに自動的にインポートします。
Gradleでは、gradle設定を更新するたびにプロジェクト設定がクリアされます。代わりに、build.gradleに次の行(または同様の行)を追加する必要があります。私はkotlinを使用しています。
sourceSets {
main {
Java {
srcDir "${buildDir.absolutePath}/generated/source/kapt/main"
}
}
}
Project Structure-Modules-Source Foldersに移動し、target/generated-sources/antlr4/com/mycompany
-プロパティの編集をクリックし、パッケージのプレフィックスをcom.mycompany
に設定します。
これがまさに、ソースディレクトリにPackage prefixを設定できる理由です。
異なるが関連する問題 ここ
そのプラグインを書いた人は誰もが大きな時間を台無しにした。それはそれを行う方法ではありません!
回避策は巨大なハックであり、プラグイン開発者に彼のバグを認識させます。
申し訳ありませんが、それが唯一のことです。
プラグインの実行直後のハックです。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>
タスク。
しかし、プラグインがフォルダーをソースフォルダーとして追加すると、ユーザーは混乱します。
フォルダを移動するソース生成フェーズにステップを追加できますか?