Создайте и установите исходный jar-файл в maven - PullRequest
0 голосов
/ 17 сентября 2018

Отказ от ответственности: я решил эту проблему и документирую решение для всего мира.

Как создать и установить *-sources.jar, содержащий исходный код delomboked в maven?

По умолчанию плагин maven-source-plugin создает jar-файл источника, не деломбокируя исходные файлы, что приводит к тому, что проекты, зависящие от двоичных файлов библиотеки, жалуются на несоответствие исходных файлов.

1 Ответ

0 голосов
/ 17 сентября 2018

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 позволит вам деломбокать исходный код (${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.Если в вашем проекте есть другие нестандартные каталоги ресурсов, вы должны настроить их в разделе ресурсов для этого плагина.

1024 ** используется вместо maven-source-плагин, потому что вы не можете указать пользовательский каталог источника в дальнейшем.Задача jar указывает на наши настраиваемые «сгенерированные источники» и создает стандартные источники jar. maven-install-plugin install-file цель используется, поскольку вы не можете прикрепить банки с помощью install гол.Мы можем взломать решение, вручную установив файл, используя цель install-file с классификатором sources. Я надеюсь, что это поможет другим, кто находится на улице борьбы, как я был с этой проблемой.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...