2014-06-08 15 views
6

Tôi có hai việc làm chạy trong Jenkins cả hai đều có thiết lập sau enter image description hereLàm thế nào để jenkins xác định kho lưu trữ cục bộ nào sẽ sử dụng?

các thiết lập toàn cầu là

enter image description here

khi họ chạy họ sử dụng các lệnh

Executing Maven: -B -f /u01/jenkins/jobs/job_1/workspace/pom.xml -Dmaven.repo.local=/u01/jenkins/maven-repositories/0 clean install 

Executing Maven: -B -f /u01/jenkins/jobs/job_2/workspace/pom.xml -Dmaven.repo.local=/u01/jenkins/maven-repositories/1 clean install 

Tại sao họ sử dụng kho khác nhau?

việc 2 phụ thuộc vào một artifact sản xuất bởi công việc 1.

+1

'Kho lưu trữ Maven cục bộ = Địa phương cho người thực thi', bạn có thấy điều gì xảy ra khi bạn thay đổi tùy chọn đó không? (gợi ý: giá trị mặc định là '~/.m2/repository' có nghĩa là cục bộ cho người dùng đang chạy jenkins = shared) –

Trả lời

6

Kho lưu trữ cục bộ phụ thuộc vào tệp settings.xml của maven nếu bạn không chỉ định riêng biệt. Theo mặc định, hình ảnh trông giống như bên dưới:

<localRepository>${env.HOME}/.m2/repository</localRepository> 

Dường như bạn có các tệp settings.xml khác nhau trên nô lệ jenkins của bạn.

+0

Tôi đã có một vấn đề với việc sử dụng nhà nên cố gắng sử dụng tư duy thực thi cục bộ được gọi là jenkins. Đó là lỗi. – BevynQ

+0

@BevynQ Dường như bạn đã có câu trả lời. Thực hành tốt, tôi chỉ không cố gắng sử dụng địa phương cho người thi hành. – Nancy

1

theo mặc định tôi assumpe rằng kho sử dụng cho từng công việc là:

**$HOME**/jobs/**JOB_NAME**/workspace 

pom.xml của bạn nên được tập trung tại đây.

+0

Có, nhưng điều tôi thực sự quan tâm là nơi kho lưu trữ maven cục bộ đang hoạt động, không phải không gian làm việc jenkins . Tôi cần các công việc khác nhau để sử dụng cùng một kho lưu trữ maven cục bộ. – BevynQ

+0

do đó nó là $ HOME/.m2/kho lưu trữ nhưng điều này là tùy chỉnh qithin Jenkins màn hình quản trị – aorfevre

9

Khi kho maven địa phương được thiết lập để Local to the executer thì 1 trong -Dmaven.repo.local=/u01/jenkins/maven-repositories/1 đề cập đến executer công việc đang chạy trong. Vì vậy, nếu công việc đang chạy trong executer n sau đó lập luận sẽ -Dmaven.repo.local=/u01/jenkins/maven-repositories/n.

+0

Điều này đã được nghiêm túc bực bội, grep'd ở khắp mọi nơi. Cảm ơn! Để tham khảo, tôi tìm thấy nó trong mã maven-plugin tại đây: https://github.com/jenkinsci/maven-plugin/blob/5a3d468d42d65abdc041c4ab441bdb1c96bba17d/src/main/java/hudson/maven/local_repo/PerExecutorLocalRepositoryLocator.java#L25 –

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