2015-03-20 2 views
0

У меня есть 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.jarPrimitive.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.

+2

Итак, вы утверждаете, что это ошибка в maven-sources-plugin? Поэтому, пожалуйста, напишите в jira http://jira.codehaus.org/browse/MSOURCES. Кроме того, я полагаю, что ваша конфигурация 'fmpp-maven-plugin'' target/generated-sources/net/mintern/primitive ', казалось, проблема. Вы должны изменить это на ' target/сгенерированные источники/', но вам нужно предоставить пакет в вашей freemaker tempale. – khmarbaise

+0

Ваша догадка верна! Когда я добавил иерархию 'net/mintern/primitive' в мой каталог' templates' (чтобы я мог напрямую выводить на 'target/generated-sources'),' sources.jar' вышел правильно. Если вы хотите повернуть свой комментарий в ответ, я с радостью соглашусь с ним. В противном случае я добавлю ответ через несколько часов. –

+0

Спасибо, что нашли время, чтобы проверить это! Я предположил, что плагины управляются, глядя на определенные каталоги, вместо того, чтобы подключиться друг к другу. Это привело меня к неправильному пути, когда я сам пытался решить проблему. –

ответ

1

Помимо этого мое предположение, что ваша конфигурация FMPP-Maven-плагин:

<outputDirectory>target/generated-sources/net/mintern/primitive</outputDirector‌​y> 

казалось проблемой. Вы должны изменить это на:

<outputDirectory>target/generated-sources/</outputDirectory> 

, но вы должны предоставить пакет в своем шаблоне freemaker. Кроме того, вы должны проверить документы плагина freemarker, чтобы убедиться, что outputDirectory не настроен по умолчанию с указанным выше значением. Если это так, вы можете полностью удалить эту запись из своего пом. (Следуйте настройкам по умолчанию). Контракт над конфигурацией.

+0

Изменение местоположения исходных файлов шаблона, чтобы я мог использовать 'outputDirectory 'по умолчанию, действительно устранил проблему. [Вот это diff] (https://github.com/mintern-java/primitive/compare/1.2...ff241c3#diff-600376dffeb79835ede4a0b285078036L85). –

 Смежные вопросы

  • Нет связанных вопросов^_^