2013-02-20 16 views
8

Tôi đang cố tạo một tệp jar chứa SDK API cho sản phẩm của chúng tôi, vì vậy khách hàng của chúng tôi có thể tạo các plugin và biên dịch nó với API của chúng tôi. Tất cả các lớp/giao diện mà chúng tôi cung cấp như một phần của lọ API SDK của chúng tôi cũng được đưa vào sản phẩm chính của chúng tôi, vì vậy các nhà phát triển API sẽ không cần phải bao gồm jar SDK API của chúng tôi vào trong plugin plugin của họ. Do đó, tôi không lo lắng về kích thước của jar API SDK của chúng tôi. Tuy nhiên, tôi muốn làm cho các nhà phát triển plugin dễ dàng hơn và chỉ cung cấp một tệp jar chứa cả các lớp đã biên dịch và javadoc (vì vậy các nhà phát triển có thể xem các nhận xét nội tuyến như một phần của tính năng tự động hoàn chỉnh khi chúng phát triển).Tạo một cái bình chứa các lớp đã biên dịch và javadoc với Maven

Chúng tôi sử dụng Maven để biên dịch và tôi đã thêm các cấu hình sau vào pom.xml API SDK:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

này hoạt động, tuy nhiên điều này tạo ra hai tập tin jar - một với các lớp học biên soạn và một với javadoc. Thay vào đó, tôi chỉ muốn tạo một tệp jar với mọi thứ.

Hiện tại chúng tôi đang sử dụng Maven để biên dịch dự án này, tuy nhiên chúng tôi được tự do sử dụng các công cụ xây dựng khác.

Trả lời

4

Bạn có thể làm điều này:

  • đính kèm mục tiêu javadoc cho chuẩn bị gói
  • chỉ định thư mục đầu ra javadoc để nhắm mục tiêu/classes

Plugin jar sẽ tạo ra một lọ với tất cả mọi thứ bên trong mục tiêu/lớp học (bao gồm cả javadocs được tạo)

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-javadoc-plugin</artifactId> 
      <version>2.7</version> 
      <executions> 
       <execution> 
        <id>attach-javadoc</id> 
        <phase>prepare-package</phase> 
        <goals> 
         <goal>javadoc</goal> 
        </goals> 
        <configuration> 
         <reportOutputDirectory>${project.build.directory}/classes/</reportOutputDirectory> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 
2

Bạn đã xem Assembly plugin chưa?

Plugin hội có thể tạo một cụm định dạng jar (mà thực sự là một hội đồng định dạng zip có tệp MANIFEST.MF). Bạn có thể chỉ định cả hai thư mục và thư mục apidocs trong hội đồng của bạn. dán một MANIFEST.MF vào đó, và bạn đã hoàn thành.

May mắn thay, mục tiêu javadoc:javadoc thể được cấu hình như một phần của build vòng đời bằng cách cấu hình nó trong phần <build> của pom.xml trong giai đoạn generate-sources. Điều đó có nghĩa là JavaDocs được tạo nên có sẵn cho plugin Assembly.

+0

David W .: Cảm ơn! Bạn có thể vui lòng đưa ra một ví dụ về cách pom.xml của tôi sẽ trông như thế nào (xin lỗi - Maven là một công cụ mới cho tôi, vì vậy tôi vẫn đang trong giai đoạn học tập của tôi). –

+0

Tôi không phải là nhà phát triển, mà chỉ là một CM, và đã lâu rồi tôi mới tạo các tệp maven pom.xml. Nếu tôi nhớ, có một tệp XML riêng biệt cho mô tả Assembly. Tôi không nhớ nó quá khó so với phần còn lại của Maven. Sonatype có lẽ là cuốn sách Maven tốt nhất hiện có [trên dòng] (http://www.sonatype.com/books/mvnref-book/reference/). Bạn cũng có thể mua [bản sao của nó] (http://shop.oreilly.com/product/9780596517335.do). –

0

Vâng, như một vấn đề của thực tế, mọi thứ có thể thực sự được thực hiện một cách đơn giản hơn.

Tạo một artifact sources jar sử dụng maven-source-plugin:

<project> 
    ... 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <version>2.2.1</version> 
     <executions> 
      <execution> 
      <id>attach-sources</id> 
      <phase>verify</phase> 
      <goals> 
       <goal>jar-no-fork</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    ... 
</project> 

Bằng cách này dự án của bạn sẽ triển khai các nguồn để kho vật của bạn. Sau đó, trong cấu hình Maven của IDE, bạn có thể chỉ cần bật tải xuống các tạo tác nguồn, có nghĩa là IDE của bạn sẽ có javadocs, nếu, tất nhiên, bạn có các nhận xét thích hợp trong mã của bạn.

Bằng cách này, bạn cũng có thể có các tạo phẩm được tách riêng.

Ngoài ra, câu trả lời của David W. và ben75 cũng là những cách hợp lệ.