免責事項:私は、この問題を解決していると知っている世界のためのソリューションを文書化しています。
どのようにして作成してインストールします*-sources.jar
含むMavenの中にソースコードを「delomboked」?
デフォルトでは、Mavenのソース・プラグインは、ソースファイルを不整合に文句を言うために、ライブラリのバイナリに依存プロジェクトの原因となるソースファイルを、delombokingせずに元のjarファイルを作成します。
TL; DRは(下に説明しました)
あなたに以下のプラグインの設定を追加plugins
で設定project.build
あなたのpom.xmlの要素
<project>
...
<build>
<plugins>
...
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>1.18.0.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
</execution>
</executions>
<configuration>
<sourceDirectory>src/main/java</sourceDirectory>
<outputDirectory>${project.build.directory}/delombok</outputDirectory>
<addOutputDirectory>false</addOutputDirectory>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>copy-to-lombok-build</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
<outputDirectory>${project.build.directory}/delombok</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>generate-delomboked-sources-jar</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<jar destfile="${project.build.directory}/${project.build.finalName}-sources.jar"
basedir="${project.build.directory}/delombok"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>install-source-jar</id>
<goals>
<goal>install-file</goal>
</goals>
<phase>install</phase>
<configuration>
<file>${project.build.directory}/${project.build.finalName}-sources.jar</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<classifier>sources</classifier>
<generatePom>true</generatePom>
<pomFile>${project.basedir}/pom.xml</pomFile>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
説明
lombok-maven-plugin
(ソースコードをdelombokすることができます${project.basedir}/src/main/java
()とターゲット・ディレクトリに配置${project.build.directory}/delombok
)。通常、これは、内のコードを配置します${project.build.directory}/generated-sources/delombok
フォルダ、しかしのIntelliJは、自動的にこの追加のソース・コードを考慮するため、あなたのライブラリーを開発する際に、重複したコードのエラーがちょうどちょうどこの場合には(デフォルト以外のターゲットディレクトリを指定し、これを停止するために、発生します外generated-sources
DIR)。
maven-resources-plugin
また、標準からリソースをコピーするために必要である${project.basedir}/src/main/resources
ディレクトリ。プロジェクト内の他の非標準のリソースディレクトリがある場合は、このプラグインのためのリソースセクションでそれらを設定する必要があります。
maven-antrun-plugin
後ででカスタムソースディレクトリを指定することはできませんので、代わりにMavenのソース・プラグインの使用されています。私たちのカスタムへのjarタスクポイントは「-ソースを生成し、」標準-という名前のソースjarを生成します。
maven-install-plugin
install-file
あなたが使用してjarファイル添付することはできませんので、目標は、使用されてinstall
ゴールを決めました。私たちは、手動で使用してファイルをインストールすることで解決策をハックすることができますinstall-file
の分類器と目標をsources
。
私はこれは私がこの問題にいたような闘争通りにある他の人に役立ちます願っています。