2015-05-10 22 views
6

Bazı verileri toplayan ve bir raportöre ileten bir belge yazdım. Bu muhabirin değiştirilebilir olmasını istiyorum. EkDependency ve/veya pluginDependency kullanarak doclet sınıf yoluna bir muhabir uygulaması eklemeyi denedim. Raportör uygulamasını Java 6 hizmet yükleyicisi ile yükleyemiyorum ve ayrıca sınıfları doclet sınıfı yükleyiciyi veya iş parçacıkları bağlam sınıfı yükleyicisini kullanarak işe yaramaz.maven-javadoc-plugin kullanarak doclet sınıfyoluna kavanoz ekle

Test.TestReporterImpl'i test belgesi sınıf yoluna nasıl alabilirim? doclet olarak

: pom içinde

apiReporterServiceLoader = ServiceLoader.load(TestReporter.class); // test.TestReporter 

apiReporterServiceLoader.iterator().hasNext(); // false 

Thread.currentThread().getContextClassLoader().loadClass("test.TestReporterImpl"); // ClassNotFoundException 

getClass().getClassLoader().loadClass("test.TestReporterImpl"); // ClassNotFoundException 

doclet

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <version>2.10.3</version> 
    <executions> 
     <execution> 
      <id>run-my-doclet</id> 
      <goals> 
       <goal>javadoc</goal> 
      </goals> 
      <phase>generate-resources</phase> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>test</groupId> 
      <artifactId>test-doclet-test-reporter</artifactId> 
      <version>${project.version}</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <doclet>test.TestDoclet</doclet> 
     <docletArtifact> 
      <groupId>test</groupId> 
      <artifactId>test-doclet</artifactId> 
      <version>${project.version}</version> 
     </docletArtifact> 
     <additionalDependencies> 
      <additionalDependency> 
       <groupId>test</groupId> 
       <artifactId>test-doclet-test-reporter</artifactId> 
       <version>${project.version}</version> 
      </additionalDependency> 
     </additionalDependencies> 
     <useStandardDocletOptions>false</useStandardDocletOptions> 
    </configuration> 
</plugin> 

test doclet test-muhabir/src/main/kaynaklar/META-INF/hizmet/Deneyin gerçekleştirilmesi. TestReporter

test.TestReporterImpl 

cevap

1

POM'unuza aşağıdakileri ekleyerek, sınıf yolunuza eklenecek dizini belirtmeniz gerekir. Yere inşa edildi. Bu, varsayılan örtük kaynak klasöründen hataların alınması için kaynak altındaki meta-inf klasörünün altındaki sınıflarınız için geçerlidir.

+0

Hangi kaynakları kullanıyorsunuz? Tüm kaynaklar sınıf yolunda. Sorun, eklenti bağımlılığı/ekDepentency, doclet'in sınıf yolunda bulunmuyor – sventschui

+0

Kaynak dir, ideal olarak sınıf yolunun bir parçası olmalı ve nihai oluşturulan kavanozlara dahil edilmeli olsa da, benzer bir sorunla ilgili olarak bir özellik dosyasını açıkça belirtmem gerekiyordu. Son dizimdeki (gölge eklentisini kullanarak) alt dizinin altındaki kaynaklarda. Sonunda, pom.xml kaynaklar etiketinin altındaki kaynak klasörünü açıkça belirterek dahil etmeye çalıştım ve işe yaradı. Tersine, açık beyanı kaldırsaydım, özellikler dosyası son kavanozun bir parçası değildi. –

+0

Kullanım durumum, ikinci kavanozun değiştirilebilir olmasını istiyorum. Kaynaklarım sınıf yolunda ancak ikinci kavanoz, doclet eklentisi – sventschui