У меня есть Maven project, который построен из сгенерированных источников. Я использую Maven-исходный плагин настроен следующим образом:maven-source-plugin создает source.jar, но он непригоден для IDE
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
...
я строю, используя mvn clean install -P release
. Это создает файл ${artifactId}-${version}-sources.jar
, который включает в себя все исходные файлы, но, по-видимому, он упакован неправильно, поскольку IDE не распознают, что источник доступен. Все остальное строит и работает правильно, включая Javadocs.
Основная точка входа в библиотеку - net.mintern.primitive.Primitive
. Когда проект строится, файл Java создается в target/generated-sources/net/mintern/primitive/Primitive.java
. Однако в sources.jar
Primitive.java
(и все остальное в каталоге primitive
) находится в корне JAR. Родительские каталоги (net/mintern/primitive
) отсутствуют в JAR.
Является ли это нормальным, или это может быть причиной моей проблемы? Я пробовал разные includes
, переходя к jar
вместо jar-no-fork
, явно добавляя <attach>true</attach>
, используя build-helper-maven-plugin
к add-source
, и, вероятно, больше, что я не хочу забыть — ничего было никакого эффекта. Maven Source Plugin configuration, похоже, не дает возможности настроить путь в JAR.
Помогите мне разобраться, что здесь происходит? Вы можете включить проект в вашем POM, добавив эту зависимость:
<groupId>net.mintern</groupId>
<artifactId>primitive</artifactId>
<version>1.2</version>
Полный POM можно рассматривать on GitHub, и если вы готовы попробовать здание, вы можете проверить проблемный проект с git clone https://github.com/mintern-java/primitive.git
, и затем git checkout 1.2
.
EDIT: Мне удалось взломать проблему, используя нечестивое сочетание maven-jar-plugin и build-helper-maven-plugin; что POM - версия 1.2.1. Тем не менее, я все еще заинтересован в правильном исправлении maven-source-plugin.
Итак, вы утверждаете, что это ошибка в maven-sources-plugin? Поэтому, пожалуйста, напишите в jira http://jira.codehaus.org/browse/MSOURCES. Кроме того, я полагаю, что ваша конфигурация 'fmpp-maven-plugin'' target/generated-sources/net/mintern/primitive outputDirectory> ', казалось, проблема. Вы должны изменить это на ' target/сгенерированные источники/ outputDirectory>', но вам нужно предоставить пакет в вашей freemaker tempale. –
khmarbaise
Ваша догадка верна! Когда я добавил иерархию 'net/mintern/primitive' в мой каталог' templates' (чтобы я мог напрямую выводить на 'target/generated-sources'),' sources.jar' вышел правильно. Если вы хотите повернуть свой комментарий в ответ, я с радостью соглашусь с ним. В противном случае я добавлю ответ через несколько часов. –
Спасибо, что нашли время, чтобы проверить это! Я предположил, что плагины управляются, глядя на определенные каталоги, вместо того, чтобы подключиться друг к другу. Это привело меня к неправильному пути, когда я сам пытался решить проблему. –