2016-08-18 3 views
1

У меня есть проект (B), который компилирует локальную банку (A). Мне нужно исключить зависимость внутри банки (A), но я не могу это сделать при создании фляги. Я могу построить банку, как я когда-либо хочу, но я должен иметь эту зависимость в нем, и только исключить их в проекте B.Невозможно исключить зависимость внутри банки

Это build.gradle банки проекта А:

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

repositories { 
    mavenCentral() 
} 

jar { 
    baseName = 'test' 
    version = '0.1.0' 

    manifest { 
     attributes ("Main-Class": "Main") 
    } 
} 

dependencies { 
    compile("org.springframework.boot:spring-boot-starter-web:1.4.0.RELEASE") // I need this excluded later 
    compile("org.springframework.boot:spring-boot-starter-jetty:1.4.0.RELEASE") // I need this excluded later 
    /* 
    some other dependencies here 
    */ 
} 

Это build.gradle для проекта Б:

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

repositories { 
    mavenCentral() 
    flatDir(dirs: "lib") 
} 

sourceCompatibility = 1.8 

dependencies { 
    compile ':test:0.1.0' // this is the jar I need to exclude some things from 

    compile("org.springframework.boot:spring-boot-starter-web:1.4.0.RELEASE") 
    compile("org.springframework.boot:spring-boot-starter-jetty:1.4.0.RELEASE") 
} 

Похоже, используя обычный исключить пункт не работает

compile (':test:0.1.0') { 
    exclude group: 'org.springframework.boot' // doesn't work 
} 

Любая помощь будет очень оценена.

+0

Этот синтаксис должен работать - что говорит зависимость? –

+0

Запуск 'dependencyInsight -configuration compile -dependency test'' дает': dependanceInsight: test: 0.1.0 \ --- compile' –

+0

О, я имел в виду, что я запускал его, например. 'Спринта загрузки стартера web'. –

ответ

0

Я получил свой ответ от here. По-видимому, невозможно читать такие свойства, как group и такие как из репозитория файлов. В конце концов я опубликовал свои зависимости для частного хранилища (tutorial) и импортировать оттуда.

+0

Я тоже буду работать. Создайте одно частное репо и загрузите его и добавьте URL-адрес в репозитории в файле build.gradle. –

+0

Не могли бы вы рассказать мне, почему fileTree не работает? Где это пошло не так? Какая у вас ошибка? –

+0

Ошибок не было. Предложение 'exclude' просто ничего не делало. Независимо от того, что я пытался исключить. Это было несколько дней назад, поэтому, чтобы быть правдивым, я не могу сказать, было ли это потому, что я допустил ошибку в том, как я упаковал банку или что вы не можете исключить из файла filetree. –

0

Я получил вашу точку. Исключение, основанный на группе не будет работать с репо flatDir, как плоский реж не имеет информации о группе. Поэтому лучше добавить «test: 0.1.0» jar в папку libs ProjectB вместо добавления в flatDir repo. Итак, используя fileTree, мы можем получить зависимость ProjectA (тест: 0.1.0 jar) для ProjectB. Из дерева файлов можно исключить исключить зависимость внутри кувшина (A) Перейди через код ниже:.

compile fileTree(dir: '../webserver/lib', include: '*.jar') 

Здесь мы включаем все банки в ../webserver/lib как зависимости.

Просто используйте исключение на fileTree. Синтаксис такой же, как для include.

Это должно сработать.

+0

Спасибо. Я начал с 'fileTree' и перешел в' flatDir', потому что это не сработало, но я, возможно, только что допустил ошибку. Но я думаю, что хорошо отметить, что если 'jar' является FatJar, тогда это тоже не сработает. –