2015-06-06 4 views
0

У меня есть следующий сценарий:Gradle + bintray: Задание зависимости зависимостей правильно

Я хочу использовать проект шахты (размещенный на bintray.com) в другом проекте шахты.

Я создал репозиторий Maven, загруженные артефакты и п файлы, а затем был в состоянии использовать .jar файл (ы) закачанный в bintray Maven репо просто отлично, со следующим build.gradle файла:

apply plugin: 'java' 
apply plugin: 'application' 

mainClassName = 'randers.test.usageTest.UsageTest' 

repositories { 
    maven { url 'http://dl.bintray.com/randers00/NotEnoughVocab' } 
    jcenter() 
} 

dependencies { 
    compile(group: 'randers.notenoughvocab.core', name: 'notenoughvocab-core', version: '0.0.1', ext: 'jar') 
} 

jar { 
    manifest { 
     attributes "Main-Class": mainClassName 
    } 
} 

Этот файл сборки успешно оснащает проект моей основной библиотекой и даже делает источники и т. Д. Доступными в среде IDE (IntelliJ IDEA I).

Проблема: Ядро само по себе использует библиотеки, которые не получают градиентом.

Это ПОМ файл, который находится на bintray:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>randers.notenoughvocab.core</groupId> 
    <artifactId>notenoughvocab-core</artifactId> 
    <version>0.0.1</version> 
    <dependencies> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>1.1.3</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>joda-time</groupId> 
     <artifactId>joda-time</artifactId> 
     <version>2.7</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.jdom</groupId> 
     <artifactId>jdom2</artifactId> 
     <version>2.0.6</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-configuration</groupId> 
     <artifactId>commons-configuration</artifactId> 
     <version>1.10</version> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-collections</groupId> 
     <artifactId>commons-collections</artifactId> 
     <version>3.2.1</version> 
     <scope>compile</scope> 
    </dependency> 
    </dependencies> 
    <licenses> 
    <license> 
     <name>GNU General Public License, Version 3.0</name> 
     <url>http://www.gnu.org/licenses/gpl.txt</url> 
     <distribution>repo</distribution> 
    </license> 
    </licenses> 
    <contributors> 
    <contributor> 
     <name>Ruben Anders</name> 
     <email>[email protected]</email> 
     <url>https://github.com/RAnders00</url> 
    </contributor> 
    </contributors> 
</project> 

Я посмотрел на другие проекты на bintray и их POM файлы выглядят одинаково.

ответ

1

декларирующих традиционный зависимые пакеты и простой способ хорошо работает:

compile 'randers.notenoughvocab.core:notenoughvocab-core:0.0.1' 

Это не работает, когда вы указываете ext: 'jar', потому что используется для загрузки одного артефакта. Из user guide:

Артефакт только нотации

Как было сказано выше, если файл дескриптора модуля не может быть найден, Gradle загрузками по умолчанию баночку с именем модуля. Но иногда даже если репозиторий содержит дескрипторы модулей, вы хотите загрузить только баннер артефакта, без зависимостей. [14] И иногда вы хотите загрузить zip из репозитория, у которого нет дескрипторов модуля. Gradle предоставляет только обозначение артефакта для этих случаев использования - просто префикс расширения, которое вы хотите загрузить с помощью знака «@»:

Пример 50.5. Артефакт только обозначение

build.gradle

dependencies { 
    runtime "org.groovy:groovy:[email protected]" 
    runtime group: 'org.groovy', name: 'groovy', version: '2.2.0', ext: 'jar' 
} 
+0

Спасибо, я просто доверял bintray быстрого копирования: http://i.imgur.com/lPEStGm.png – RAnders00

Смежные вопросы