Một giải pháp tùy biến để sử dụng với Artifactory + Ivy + ant
là để quét từng module để biết thông tin giấy phép. Nếu giấy phép được tìm thấy, hãy điền vào tệp giấy phép đó trong Artifactory và cập nhật nó là ivy.xml
để có giấy phép đó dưới dạng một tạo phẩm được xuất bản. Sau đó, gọi <ivy:retrieve/>
để tìm nạp giấy phép cùng với tệp jar của nó.
Giấy phép có thể được chỉ định trong số ivy.xml
của mô-đun làm URL. Trong trường hợp này, hãy sử dụng nhiệm vụ của để tải xuống giấy phép và viết nó vào một tệp văn bản.
[inside log4j's ivy.xml as an example]
<ivy-module xmlns:m="http://ant.apache.org/ivy/maven" version="2.0">
<info organisation="log4j" module="log4j" revision="1.2.16" status="integration"
publication="20120620150430">
<license name="The Apache Software License, Version 2.0"
url="http://www.apache.org/licenses/LICENSE-2.0.txt"/>
...
</info>
</ivy-module>
Ngoài ra, giấy phép có thể được bao gồm như là một tập tin văn bản trong tập tin .jar
của module. Trong trường hợp này, hãy sử dụng nhiệm vụ unjar
của để trích xuất giấy phép và ghi nó vào một tệp văn bản.
[inside junit's .jar file as an example]
junit-4.8.2.jar/LICENSE.txt
Khi giấy phép đã được viết ra như một tập tin văn bản, sử dụng ant
's xmltask nhiệm vụ để thêm giấy phép như một artifact.
[inside log4j's ivy.xml as an example]
<publications>
<artifact conf="master" ext="jar" name="log4j" type="bundle"/>
<artifact conf="sources" ext="jar" m:classifier="sources" name="log4j" type="source"/>
<artifact conf="javadoc" ext="jar" m:classifier="javadoc" name="log4j" type="javadoc"/>
<!-- next line added -->
<artifact conf="master" ext="txt" name="log4j" type="license"/>
</publications>
Xuất bản sửa đổi ivy.xml
và giấy phép trở lại Artifactory.
<ivy:resolve file="${ivy.xml}" />
<ivy:publish resolver="${resolver}" pubrevision="@{rev}" status="integration"
overwrite="true" forcedeliver="true" haltonmissing="false"
srcivypattern="${ivy.local}/[organisation]/[module]/ivy-[revision].xml" >
<artifacts pattern="${ivy.local}/[organisation]/[module]/ivys/ivy-[revision].[ext]" />
<artifacts pattern="${ivy.cache.dir}/[organisation]/[module]/licenses/[module]-[revision].[ext]" />
</ivy:publish>
Sử dụng <ivy:retrieve/>
để lấy giấy phép cùng với file jar của nó khi bundling với xây dựng của bạn.
<ivy:retrieve pattern="${ivy.local}/[artifact].[ext]" conf="compile, runtime" type="jar, license" />
Sonatype đã đưa ra một sản phẩm mới cho quản lý giấy phép và tuân thủ gọi là "Insight" http://www.sonatype.com/Products/Sonatype-Insight/Development-Insight –