У меня есть проект Java, у которого есть пара зависимостей, например:
dependencies {
compile("com.whatever.jar:jar-1:1.2.3")
compile("com.whatever.jar:jar-2:4.5.6")
compile("com.whatever.jar:jar-3:7.8.9")
}
Я упаковываю его как библиотеку jar и публикую его в хранилище вместе с файлом POM, который описывает эти зависимости:
<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.my.project</groupId>
<artifactId>my-library</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.whatever.jar</groupId>
<artifactId>jar-1</artifactId>
<version>1.2.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.whatever.jar</groupId>
<artifactId>jar-2</artifactId>
<version>4.5.6</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.whatever.jar</groupId>
<artifactId>jar-3</artifactId>
<version>7.8.9</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
У меня также есть еще один проект, который зависит от этого ранее построенного фляги во время компиляции:
dependencies {
compileOnly("com.my.project:my-library:1.0.0")
}
Я хотел бы создать задачу, которая собирает второйпроект и создает zip-файл, содержащий как com.my.project:my-library:1.0.0
jar, так и его транзитивные зависимости (jar-1
, jar-2
и jar-3
).
task createZip << {
into('lib') {
// here I would like to do something like (it's a horrible pseudo-code):
from configurations.(com.my.project:my-library:1.0.0).jar.transitiveDependencies.files
}
}
Как мне этого добиться?
Редактировать: Я также хотел бы получить программный доступ к списку транзитивных зависимостей my-library
(и именно к ним, а не к каким-либо другим зависимостям в проекте), чтобы создать атрибут манифеста Loader-Path
с их использованием.