2017-02-21 20 views
0

Я строй .jar файл, который, во время компиляции, зависит от 3-й Logback артефактов (Logback-код, Logback-классические, Logback-расширения)Gradle Dependency Management

Они объявлены с compile объем.

My jar builds, но когда я пытаюсь использовать его в другом проекте, я считаю, что мне нужно снова указать 3 зависимостей журнала, иначе классы не будут найдены. Я ожидал, что эти зависимости будут выполнены, объявив зависимость от моей банки.

Я новичок в градиенте и работаю с существующими сценариями, которые у меня есть только для самого детального понимания.

EDIT - Added some details of the dependency config

В проекте, который строит .jar файл, зависимости объявляются следующим

compile group: 'ch.qos.logback',name: 'logback-classic', version: '1.2.1' compile group: 'ch.qos.logback',name: 'logback-core', version: '1.2.1' compile group: 'org.logback-extensions',name: 'logback-ext-spring', version: '0.1.4'

Сосуд файл, который я изготовлять объявлен в «других» проектов зависимостей как compile group: 'mygroup',name: 'mylogback', version: '1.0.0-SNAPSHOT'

Эта зависимость вытаскивается из моего локального репозитория maven, в то время как зависимости от журнала происходят из nex мы репо.

Further Edit Дерево зависимостей другого проекта есть это, что, казалось бы поддержать мое мнение о том, что проект не приносит его зависимости с ним ....

> | +--- commons-io:commons-io:2.5 | \--- 
> commons-collections:commons-collections:3.2.2 
> +--- mygroup:mylogback:1.0.0-SNAPSHOT 
> +--- ch.qos.logback:logback-classic:1.2.1 | +--- ch.qos.logback:logback-core:1.2.1 | \--- org.slf4j:slf4j-api:1.7.22 
> +--- ch.qos.logback:logback-core:1.2.1 
> +--- org.logback-extensions:logback-ext-spring:0.1.4 | \--- ch.qos.logback:logback-classic:1.1.1 -> 1.2.1 (*) 

Resolution

Чтобы ответить на мой вопрос, возникла проблема из-за

  • отсутствие плагина maven-publish в моем скрипте сборки
  • плохо сформированный publishing задание, которое опубликовано artefact:jar. Изменение этого на from components.java сделало трюк
+0

Просьба показать, как вы объявляете зависимости. У меня такое ощущение, что они зависят от локальных файлов, а не от зависимостей maven/ivy. –

+0

@LanceJava: Я добавил некоторые дополнительные детали, которые, я надеюсь, это то, что вы хотели видеть. – DaveH

+0

Проблема заключается в том, что град не распознает logback как переходная зависимость вашего проекта. Теперь я не знаю, как это сделать с градием. Возможно, добавьте файл pom в ваш проект, который идентифицирует logback как среду исполнения. Я считаю, что град признал maven pom-файлы. – DwB

ответ

1

У меня такое ощущение, что ваша проблема заключается в развертывании ваших артефактов, так как он компилируется ОК.

Убедитесь, что определение развертывания/загрузки находится в том же формате, что и целевой репозиторий артефакта (локальный maven в вашем случае, верно?). Вы можете проверить это, посмотрев папку назначения для файлов pom (или плющ-файлов в зависимости от вашего определения) и убедитесь, что она содержит данные в правильном формате.

Ваше определение выглядит так? :

apply plugin: 'maven' 

uploadArchives { 
    repositories { 
     mavenDeployer { 
      repository(url: "file://localhost/tmp/myRepo/") 
     } 
    } 
} 

Смотреть подробнее в The Gradle documentation on maven plugin

Подробнее о публикации можно прочитать в Gradle documentation on publishing и многое другое на разрешение зависимостей и моделей в целом можно найти на Gradle documentation on dependency management

0

Нанести зависимость всех подпроектов ,

subprojects { 
    dependencies { 
     // ... 
    } 
} 

Существует также целый апи, чтобы иметь возможность выбирать конкретный проект и применять к ним конфигурацию.

configure([project(":a"), project(":b"), project(":c")]) { 
    dependencies { 
     // ... 
    } 
} 

configure(subprojects.findAll { it.name.startsWith("prefix") }) { 
    dependencies { 
     // ... 
    } 
} 

Кроме того, если вы хотите, чтобы переходные зависимости работали, вам нужно добавить зависимости между проектами через gradle.

dependencies { 
    compile project(":toolbox") 
} 

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

  • Нет связанных вопросов^_^