Giả sử tôi có một mô-đun A:jar
, có thời gian chạy và tập hợp các phụ thuộc phụ thuộc vào phiên bản JDK. Trong ví dụ của tôi, tôi có một số pre-jdk6-profile
cho JAXB API: trước JDK 1.6.0, tôi cần bao gồm jaxb-api-nnn.jar
làm phụ thuộc biên dịch. Hồ sơ này được đặt ở A.pom
.Làm thế nào để kích hoạt cấu hình Maven trong một mô-đun phụ thuộc?
Tôi cũng có mô-đun B:war
, phụ thuộc vào A:jar
. Tôi muốn có thể kích hoạt hồ sơ này trên máy chủ xây dựng để xây dựng JDK 1.5.x có thể phân phối. Khi tôi thực hiện Maven với một hồ sơ được kích hoạt, tôi nhận được thông báo:
mvn -Ppre-jdk6-profile -o install
[WARNING]
Profile with id: 'pre-jdk6-profile' has not been activated.
và jaxb-api-nnn.jar
là mất tích trong kết quả B.war
. Tuy nhiên, nếu tôi kích hoạt hồ sơ này khi xây dựng từ phụ huynh pom.xml
, mọi thứ đều ổn. Điều đó có nghĩa là các cấu hình không được thừa kế từ các phụ thuộc và pom.xml đa mô-đun cha mẹ có thể xây dựng mọi thứ một cách chính xác vì có vẻ như tất cả các cấu hình được hợp nhất trong lò phản ứng.
Việc chuyển cấu hình sang pom chính sẽ khiến mọi thứ trở nên tồi tệ hơn vì phụ thuộc được áp dụng cho tất cả các dự án khác (ví dụ: C:ear
). Có những giải pháp tốt đẹp cho nhiệm vụ này, cụ thể là, nếu bất kỳ mô-đun A
phụ thuộc vào mô-đun B
, sau đó tất cả các phụ thuộc biên dịch và thời gian chạy được kích hoạt bởi một cấu hình, được xử lý một cách chính xác?
Hồ sơ trong dự án A:jar
sau:
<project ...>
<artifactId>A</artifactId>
<packaging>jar</packaging>
...
<parent>
<artifactId>P</artifactId>
...
</parent>
<profiles>
<profile>
<id>pre-jdk6-profile</id>
<activation>
<jdk>(,1.6.0)</jdk>
</activation>
<dependencies>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
...
</project>
Tôi có cần thêm phần thứ 2 vào mô-đun 'A' hoặc mô-đun' B' không? –
cả hai. Trong JAR với ' được cung cấp ', trong webapp với phạm vi mặc định. Nhưng trong cả hai bên trong hồ sơ. –
Tôi tin rằng, tôi có thể sử dụng chỉ (b) nếu tôi chạy xây dựng trên Hudson.Cảm ơn bạn đã gợi ý. –