2013-09-23 54 views
7

Tôi đang cố gắng đặt tên cho tạo phẩm được xây dựng theo gradle. Nhìn vào build.gradle này:Sử dụng archivesBaseName trong một dự án gradle không có hiệu lực

archivesBaseName='this_is_ignored' 
apply plugin: 'groovy' 
archivesBaseName='this_is_also_ignored' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.codehaus.groovy:groovy-all:2.+' 
} 

Tôi cũng đã cố gắng trong gradle.properties:

archivesBaseName=`this_is_ignored_too` 

Trong mọi trường hợp ./gradlew build tạo ra một file .jar dựa trên thư mục nơi cư trú của dự án (mà như tôi hiểu nó là project.name , Tôi chỉ hy vọng sẽ ghi đè điều đó với archivesBaseName).

Nói cách khác, tôi muốn:

~/gradle-helloworld > ./gradlew build 

để tạo this_is_ignored.jar, nhưng nó tạo ra gradle-helloworld.jar để thay thế.

Bất kỳ ý tưởng nào?

+6

Nếu bạn đặt 'archivesBaseName' trước khi áp dụng plugin, bạn sẽ giới thiệu thuộc tính động (cung cấp cảnh báo không dùng nữa). Thuộc tính động này sau đó sẽ đổ bóng được giới thiệu bởi plugin, đó là lý do tại sao nhiệm vụ thứ hai không có hiệu ứng mong muốn. Giải pháp là chỉ đặt thuộc tính * sau * áp dụng plugin. –

Trả lời

4

(Biến Peter 's bình luận vào một câu trả lời CW.)

Nếu bạn đặt archivesBaseName trước khi áp dụng các plugin, bạn sẽ giới thiệu một tài sản năng động (trong đó đưa ra một cảnh báo không dùng nữa). Thuộc tính động này sau đó sẽ đổ bóng được giới thiệu bởi plugin, đó là lý do tại sao nhiệm vụ thứ hai không có hiệu ứng mong muốn. Giải pháp là chỉ đặt thuộc tính sau khi áp dụng plugin.