2016-09-20 2 views
0

Я написал свой собственный joc doclet и хочу упаковать его в один файл jar, чтобы использовать его позже.Упаковка пользовательского javadoc doclet с maven

настоящее время я использую Maven с этими настройками для его генерации:

<build> 
    <finalName>Doclet</finalName> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>2.3.1</version> 
      <configuration> 
       <archive> 
       <manifest> 
        <addClasspath>true</addClasspath> 
        <mainClass>de.test.tools.doclet.Doclet</mainClass> 
       </manifest> 
       </archive> 
      </configuration> 
     </plugin> 

     <!-- Maven Assembly Plugin --> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>make-my-jar-with-dependencies</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 

       <archive> 
        <manifest> 
         <addClasspath>true</addClasspath> 
         <mainClass>de.test.tools.doclet.Doclet</mainClass> 
        </manifest> 
       </archive> 

       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 

      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Проблема:
Все правильно упаковано в банку, но мои источники отсутствуют.
Если я попытаюсь сделать простой mvn package, он говорит мне, что пакет солнца не существует.

error: package com.sun.javadoc does not exist

Я думаю, что последняя часть является главной причиной, почему я не могу найти свои источники в банке и, таким образом, мой вопрос, как я могу сказать Maven игнорировать эти импорта.

+0

Обратитесь к [link] (http://maven.apache.org/plugins/maven-assembly-plugin/examples/multimodule/module-source-inclusion-simple.html). –

ответ

0

Проблема заключается в том, что maven не может найти пакет com.sun.javadoc который находится в файле tools.jar в папке/lib каталога установки java.

Eclipse смог выполнить его, потому что я добавил его в путь к классам, но maven не знал, откуда он может получить ресурсы. Таким образом, добавление системы зависимости следующих решена проблема для меня:

<dependency> 
    <scope>system</scope> 
    <groupId>com.sun</groupId> 
    <artifactId>tools</artifactId> 
    <version>YOUR_JAVA_VERSION</version> 
    <systemPath>${java.home}/../lib/tools.jar</systemPath> 
</dependency> 

Заменить версию с версией и убедитесь, что Java дома известно в своей среде.

Примечание: Эта зависимость не работает на MacOS. См.: JDK tools.jar as maven dependency. Резюме. Используйте профили для каждой ОС, чтобы указать правильный путь.

Мне нужно только поддерживать Linux + Windows, поэтому это лучшее решение для меня.