2010-08-04 42 views
14

Tôi đang sử dụng plugin maven-biên dịch để biên dịch các lớp. Bây giờ tôi muốn thêm một tệp jar vào classpath hiện tại. tệp đó nằm ở vị trí khác (hãy nói c: /jars/abc.jar. tôi muốn để tệp này ở đây). Làm thế nào tôi có thể làm điều đó. Nếu tôi sử dụng classpath trong đối số:Maven: thêm thư mục hoặc tệp jar vào đường dẫn lớp hiện tại

<configuration> 
<compilerArguments> 
    <classpath>c:/jars/abc.jar</classpath> 
</compilerArguments> 
</configuration> 

nó sẽ không làm việc vì nó sẽ ghi đè classpath hiện nay (bao gồm tất cả các phụ thuộc)

Xin hãy giúp tôi.

+0

Bình này có cần phải chính xác vị trí đó hay bạn chỉ cần một cách để bao gồm các lọ địa phương? – Gamlor

+2

Bản sao của [Maven, cách thêm lib bổ sung không có sẵn trong repo] (http://stackoverflow.com/questions/2479046/maven-how-to-add-additional-libs-not-available-in-repo), [Maven. Phải làm gì với lọ "vô gia cư"?] (Http://stackoverflow.com/questions/2916949/maven-what-to-do-with-homeless-jars), [Các lọ địa phương không được bao gồm trong đường dẫn lớp] (http : //stackoverflow.com/questions/3280834/local-jars-are-not-included-in-class-path/3281409#3281409) và nhiều mục khác. –

+1

Bạn có tìm cách thêm dir? Thay vì thêm từng lọ và cá nhân trong classpath? – SJunejo

Trả lời

7

Điều này có thể đã được yêu cầu trước đó. Xem Can I add jars to maven 2 build classpath without installing them?

Tóm lại: bao gồm bình của bạn làm phụ thuộc với phạm vi hệ thống. Điều này đòi hỏi phải xác định đường dẫn tuyệt đối cho bình.

cũng http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

+10

Tôi tự hỏi khi nào mọi người sẽ ngừng đề xuất lạm dụng phạm vi 'hệ thống' Hãy xem [answer] của [Brian] (http://stackoverflow.com/questions/364114/can-i-add-jars-to-maven-2-build-classpath- mà không cần cài đặt chúng/764684 # 764684) trong câu hỏi mà bạn đã liên kết. Xem thêm [câu trả lời trước này] (http://stackoverflow.com/questions/3280834/local-jars-are-not-included-in-class-path/3281409#3281409). –

+1

một câu hỏi khác. Nếu tôi cần thêm một thư mục (chứa nhiều tệp .class) vào classpath. tôi làm nó như thế nào. – David

+1

@Pascal Thivent - tốt, nó sẽ kết thúc khi mọi người ngừng làm vô nghĩa như bin.zip chứa trong dự án org.bytedeco javacv-0.9 ở trung tâm maven. Nếu bạn nói về hành vi maven bình thường, tốt, như một người dùng tôi không thể sửa chữa tải lên maven .....có lẽ tôi nên phàn nàn ở trung tâm quạ. – user1050755

0

Từ docsexample Xem nó không phải là rõ ràng rằng thao tác classpath không được phép.

<configuration> 
<compilerArgs> 
    <arg>classpath=${basedir}/lib/bad.jar</arg> 
</compilerArgs> 
</configuration> 

Nhưng thấy Java docs (còn https://www.cis.upenn.edu/~bcpierce/courses/629/jdkdocs/tooldocs/solaris/javac.html)

đường -classpath Chỉ định javac con đường sử dụng để tìm kiếm các lớp học cần thiết để chạy javac hoặc đang được tham chiếu bởi các lớp khác bạn là biên dịch. Ghi đè biến môi trường mặc định hoặc CLASSPATH nếu biến được đặt.

Có lẽ nó có thể để có được classpath hiện tại và mở rộng nó,
thấy in maven, how output the classpath being used?

<properties> 
     <cpfile>cp.txt</cpfile> 
    </properties> 

    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-dependency-plugin</artifactId> 
    <version>2.9</version> 
    <executions> 
     <execution> 
     <id>build-classpath</id> 
     <phase>generate-sources</phase> 
     <goals> 
      <goal>build-classpath</goal> 
     </goals> 
     <configuration> 
      <outputFile>${cpfile}</outputFile> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

đọc tập tin (Read a file into a Maven property)

<plugin> 
    <groupId>org.codehaus.gmaven</groupId> 
    <artifactId>gmaven-plugin</artifactId> 
    <version>1.4</version> 
    <executions> 
    <execution> 
     <phase>generate-resources</phase> 
     <goals> 
     <goal>execute</goal> 
     </goals> 
     <configuration> 
     <source> 
      def file = new File(project.properties.cpfile) 
      project.properties.cp = file.getText() 
     </source> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

và cuối cùng

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.6.1</version> 
    <configuration> 
     <compilerArgs> 
     <arg>classpath=${cp}:${basedir}/lib/bad.jar</arg> 
     </compilerArgs> 
    </configuration> 
    </plugin> 
Các vấn đề liên quan