Maven: Làm thế nào để thay đổi đường dẫn đến thư mục đích từ dòng lệnh?
(Tôi muốn sử dụng một thư mục đích khác trong một số trường hợp)
Maven: Làm thế nào để thay đổi đường dẫn đến thư mục đích từ dòng lệnh?
(Tôi muốn sử dụng một thư mục đích khác trong một số trường hợp)
target/
và tôi muốn cũng có thể xây dựng từ dòng lệnh mà không cần hai quy trình dẫm chân nhau.
src/it/my-integration-test-project/pom.xml
từ dòng lệnh mà không tạo target
thư mục trong cây nguồn, thư mục này sẽ được sao chép khi các bài kiểm tra tích hợp được chạy như một phần của giai đoạn xác minh của dự án chứa.
Câu trả lời:
Bạn nên sử dụng hồ sơ.
<profiles>
<profile>
<id>otherOutputDir</id>
<build>
<directory>yourDirectory</directory>
</build>
</profile>
</profiles>
Và bắt đầu maven với hồ sơ của bạn
mvn compile -PotherOutputDir
Nếu bạn thực sự muốn xác định thư mục của mình từ dòng lệnh, bạn có thể làm như sau ( KHÔNG được khuyến nghị chút nào ):
<properties>
<buildDirectory>${project.basedir}/target</buildDirectory>
</properties>
<build>
<directory>${buildDirectory}</directory>
</build>
Và biên dịch như thế này:
mvn compile -DbuildDirectory=test
Đó là bởi vì bạn không thể thay đổi thư mục đích bằng cách sử dụng -Dproject.build.directory
-Dproject.build.directory
được sử dụng, nó sẽ có thể sử dụng được; và đây là một giải pháp cho -Dproject.build.directory
vấn đề. Ngoài ra, với giải pháp đầu tiên, bạn chỉ định đường dẫn một lần và mãi mãi, bạn không thể mắc lỗi đánh máy trong tên thư mục khi khởi chạy dòng lệnh, bạn có thể dễ dàng sử dụng giải pháp này ngay cả khi bạn làm việc từ IDE, v.v.
settings.xml
thay vì dòng lệnh, để có tính di động nhiều hơn?
Colin đúng là một hồ sơ nên được sử dụng. Tuy nhiên, câu trả lời của anh ấy đã mã hóa thư mục đích trong hồ sơ. Một giải pháp thay thế sẽ là thêm một hồ sơ như thế này:
<profile>
<id>alternateBuildDir</id>
<activation>
<property>
<name>alt.build.dir</name>
</property>
</activation>
<build>
<directory>${alt.build.dir}</directory>
</build>
</profile>
Làm như vậy sẽ có tác dụng thay đổi thư mục xây dựng thành bất kỳ thứ gì được cung cấp bởi thuộc tính alt.build.dir, có thể được cung cấp trong POM, trong cài đặt của người dùng hoặc trên dòng lệnh. Nếu thuộc tính không có, quá trình biên dịch sẽ diễn ra trong thư mục đích bình thường.
-Dalt.build.dir=~/mytarget
tương đương với việc sử dụng -D
cho một số thuộc tính khác?