2015-06-11 18 views
10

Có cách nào để thêm mục nhập classpath tùy ý vào tệp kê khai tệp JAR sử dụng plugin-maven-plugin không?Làm cách nào để thiết lập các mục nhập Class-Path bổ sung trong tệp kê khai bằng plugin onejar Maven?

Tôi đã tìm đường đến configure maven-jar-plugin to do this, nhưng dường như không có tùy chọn nào cho plugin one-maven-plugin.

Điều này không được thực hiện để tìm các lớp bổ sung (nếu không thì tại sao sử dụng plugin onejar, phải không?), Mà là để định vị tệp cấu hình phải nằm ngoài JAR.

Có giải pháp trực tiếp hoặc giải pháp cho việc này không?

Trả lời

5

Việc sử dụng plugin một thực sự có cần thiết không? Bạn có thể đạt được mục tiêu tương tự (bao gói trong một chai ứng dụng của bạn VÀ tất cả các phụ thuộc bắt buộc, bao gồm cả các phần tử chuyển tiếp VÀ thêm cấu hình cho Lớp-đường dẫn VÀ sử dụng plugin ổn định/chuẩn) áp dụng phương pháp sau:

  • Configure mục class-Path trong Jar ứng dụng của bạn bằng cách sử dụng Jar Plugin Maven và approach bạn đề cập trong câu hỏi
  • sử dụng Maven Assembly Plugin để đóng gói một JAR đơn bao gồm cả phụ thuộc, như đã giải thích here, trong một câu hỏi khác stackoverflow/câu trả lời.

Một ví dụ về tập tin thực thi một jar (mà không sử dụng các plugin một lọ) có thể là như sau:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <configuration> 
       <!-- your further configuration here --> 
      </configuration> 
     </plugin> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <archive> 
        <manifest> 
         <mainClass>com.sample.MainApp</mainClass> 
         <!-- your further configuration here --> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

Nếu bạn cần thêm chơi với classpath và Maven, tôi sẽ đề nghị để cũng kiểm tra câu hỏi này here trên stackoverflow.

3

Adding arbitrary manifest entries là có thể trong 1.4.5:

<plugin> 
    <groupId>org.dstovall</groupId> 
    <artifactId>onejar-maven-plugin</artifactId> 
    <version>1.4.5</version> 
    <executions> 
     <execution> 
      <configuration> 
       <manifestEntries> 
        <Build-Status>Yes</Build-Status> 
       </manifestEntries> 
      </configuration> 
      <goals> 
       <goal>one-jar</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

Các onejar-maven-plugin dự án dường như không được phát triển tích cực nữa, vì vậy bạn có thể muốn chuyển sang giải pháp khác (ví dụ maven-assembly-plugin) cuối cùng.


Plugin không có sẵn trên Maven Central. Một người nào khác đã đưa một phiên bản của nó lên Maven Central with a different group ID.

0

Thư viện bổ sung có thể được thêm vào đường dẫn lớp tại thời điểm khởi chạy. Thuộc tính một jar.class.path thể được sử dụng

một jar.class.path
classpaths tắm được bổ sung vào môi trường thực thi. Sử dụng dấu tách đường dẫn độc lập nền tảng '|'

Ví dụ: --one-jar.class.path = "./ lib/two.jar | /opt/lib/three.jar"

Nguồn: http://one-jar.sourceforge.net/index.php?page=details

Các vấn đề liên quan