Tôi cần có được kết quả mục tiêu "phụ thuộc: cây" từ Maven khi bắt đầu giai đoạn "thử nghiệm", để giúp gỡ lỗi một vấn đề mà tôi cần để biết phiên bản nào của mọi thứ đang được sử dụng. Trong Ant nó sẽ được dễ dàng, tôi đã xem xét các tài liệu Maven và nhiều câu trả lời ở đây nhưng vẫn không thể tìm ra nó, chắc chắn nó không phải là khó?Maven chạy "phụ thuộc: cây" khi bắt đầu giai đoạn "thử nghiệm"
Trả lời
Nếu bạn muốn chắc chắn rằng dependency:tree
đang được chạy vào đầu giai đoạn test
thì bạn sẽ phải di chuyển mục tiêu surefire:test
gốc để được thực hiện sau dependency:tree
. Để làm điều đó, bạn sẽ phải đặt các plugin theo thứ tự chúng sẽ được chạy.
Dưới đây là ví dụ pom.xml
hoàn chỉnh bổ sung maven-dependency-plugin
trước maven-surefire-plugin
. Bản gốc default-test
bị tắt và một custom-test
mới được thêm vào và cái này sẽ được chạy sau khi thực hiện dependency-tree
.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.stackoverflow</groupId>
<artifactId>Q12687743</artifactId>
<version>1.0-SNAPSHOT</version>
<name>${project.artifactId}-${project.version}</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>dependency-tree</id>
<phase>test</phase>
<goals>
<goal>tree</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.2</version>
<executions>
<execution>
<id>default-test</id>
<!-- Using phase none will disable the original default-test execution -->
<phase>none</phase>
</execution>
<execution>
<id>custom-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Đó là một chút vụng về nhưng đó là cách để vô hiệu hóa hành quyết.
Declare này trong POM dự án của bạn:
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<phase>test-compile</phase>
<goals>
<goal>tree</goal>
</goals>
</execution>
</executions>
</plugin>
Bạn có thể áp dụng mô hình này để kích hoạt bất kỳ plugin trong một xây dựng giai đoạn cụ thể. Xem http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Plugins.
Xem thêm http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference để biết danh sách các giai đoạn xây dựng. Như maba chỉ ra, bạn cần phải cẩn thận chọn giai đoạn để đảm bảo mục tiêu tree
được thực hiện vào đúng thời điểm.
Điều đó sẽ chạy 'phụ thuộc: cây' sau các thử nghiệm thực tế. OP nói rằng anh ta muốn nó chạy lúc bắt đầu giai đoạn thử nghiệm. – maba
Điểm tốt. Thay vào đó, anh ta có thể liên kết với 'test-compile' hoặc thậm chí' compile'. Hy vọng rằng sự hiểu biết các mô hình chung cho các ràng buộc bổ sung cho các giai đoạn sẽ là đủ để giải quyết vấn đề. (Đã chỉnh sửa câu trả lời của tôi). –
+1 để hiển thị cách thêm 'dependency: tree' vào giai đoạn' test'. Tôi sẽ thêm một câu trả lời khác cho bạn thấy làm thế nào để có được 'dependency: tree' để chạy ở đầu giai đoạn' test'. – maba
chí này sản lượng cây phụ thuộc kiểm tra:
mvn test dependency:tree -DskipTests=true
Bạn nói rằng bạn muốn 'maven-phụ thuộc-plugin' để chạy' tree' mục tiêu trong giai đoạn 'test'? – maba