2011-02-09 2 views
3

전용 docs 프로젝트 내에서 내 프로젝트의 특정 아티팩트에 대해서만 javadocs를 생성하려고합니다.Maven 3 : 정의 된 아티팩트에 대한 Javadoc 생성

즉, 예를 들어 "docs"라는 독립 프로젝트를 갖고 싶습니다. docs/pom.xml에서 생성 된 javadocs에 포함되어야하는 아티팩트를 정의하고 싶습니다.

지금까지 내가 포함시키고 자하는 프로젝트에 대해 별도의 sources.jar 파일을 생성해야한다는 것을 알게되었습니다. 그러나 거기에서 나는 어떻게 갈 것인지 알 수 없다.

지금 나는 단지 두 가지 방법을 상상할 수 :

  1. 내가 포함을 풀고 어떻게 든 소스 디렉토리의 javadoc 플러그인을 지적 할 유물 (sources.jar)를 가져옵니다.

  2. javadoc- 플러그인의 "dependencySourceInclude"옵션을 사용하여 관련성 높은 것으로 보이는 아티팩트를 정의하십시오. 그러나 이것이 의도 된 사용인지 확실하지 않습니다.

이 문제를 해결하는 방법은 무엇입니까?

답변

5

나는 해결책을 스스로 발견했다. 그것은 약간의 해킹이지만 그것은 나를 위해 작동합니다.

아티팩트 가져 오기 (sources.jar) 내가 포함시키고 압축을 풀고 javadoc 플러그인을 소스 디렉토리로 향하게하고 싶습니다.

이 솔루션은 나중에 더 자세히 설명하겠습니다 네 개의 differents의 부품이 있습니다

  1. 내가
  2. 를 포함 할 모든 이슈에 sources.jars를 생성 풀고 그 sources.jars을
  3. javadoc-plugin을 압축 해제 된 소스로 지정하여 Javadoc 생성
  4. 생성 된 apidocs를 zip 파일로 패키지화하십시오.
다음과 같이

1. 당신은 받는다는 - 소스 - 플러그인을 사용할 필요가 sources.jars를 생성하려면

를 포함 할 모든 이슈에 sources.jars를 생성 : 더 자세히 이제

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.1.2</version> 
     <executions> 
     <execution> 
      <id>bundle-sources</id> 
      <phase>package</phase> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

apidocs에 포함하려는 모든 프로젝트/모듈/이슈에서이 작업을 수행해야합니다.

2. 포장을 풀고 그 sources.jars

당신은 당신이 sources.jar 파일의 압축을 풀 다음과 같은 플러그인을 추가해야하는의 javadoc을 생성하는 데 사용할 pom.xml 파일에서.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>unpack-artifact-sources</id> 
     <phase>generate-resources</phase> 
     <goals> 
     <goal>unpack</goal> 
     </goals> 
     <configuration> 
     <artifactItems> 
      <artifactItem> 
      <groupId>${project.groupId}</groupId> 
      <artifactId><!-- your artifact here --></artifactId> 
      <version>${project.version}</version> 
      <classifier>sources</classifier> 
      <overWrite>true</overWrite> 
      </artifactItem> 
     </artifactItems> 
     <outputDirectory>${project.build.directory}/unpack_sources</outputDirectory> 
     </configuration> 
    </execution> 
    <!-- add more unpack-executions here --> 
    </executions> 
</plugin> 

원하는만큼 압축 해제 실행 블록을 추가 할 수 있습니다.

3.

는 압축을 푼 소스 이제

까다로운 부분에 javadoc에 플러그인을 지정하여 자바 독을 생성합니다. javadoc-plugin에 소스 파일을 찾을 위치를 알립니다. 가져온 정의는 <sourcepath> 정의입니다. 이 섹션에서 우리는 우리가

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-javadoc-plugin</artifactId> 
    <version>2.7</version> 
    <configuration> 
    <sourcepath>${project.build.directory}/unpack_sources</sourcepath> 
    </configuration> 
    <executions> 
    <execution> 
     <goals> 
     <goal>javadoc</goal> 
     </goals> 
     <phase>process-resources</phase> 
    </execution> 
    </executions> 
</plugin> 

당신이 당신의 target 폴더 안에 site 폴더로 끝날 것이 시점에서 mvn clean install 전화 2 단계에서 소스를 압축 해제 한 폴더를 정의합니다. 이 사이트 폴더에는 apidocs가 있습니다. 하지만이 모든 것들을 반짝이는 물건으로 만들려면 apidocs를 zip 아카이브로 모으고 싶습니다.

4. 패키지 zip 파일

에서 생성 된 apidocs에 당신이 maven-assembly-plugin과 별도의 어셈블리 파일을 사용해야하는 문서를 조립합니다. 당신의 치어 내부 먼저 플러그인 - (고화질) :

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>docs-assembly</id> 
     <phase>package</phase> 
     <configuration> 
     <appendAssemblyId>false</appendAssemblyId> 
     <descriptors> 
      <descriptor>src/main/assembly/assemble.xml</descriptor> 
     </descriptors> 
     </configuration> 
     <goals> 
     <goal>single</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

assemble.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<assembly> 
    <id>${project.build.finalName}</id> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <includeBaseDirectory>false</includeBaseDirectory> 
    <fileSets> 
    <fileSet> 
     <directory>target/site/apidocs</directory> 
     <outputDirectory>/</outputDirectory> 
    </fileSet> 
    </fileSets> 
</assembly>