2016-09-28 2 views
0

У меня странная проблема. У меня есть проект, который создает военный файл с некоторыми пользовательскими включениями, такими как изображения и т. Д. Пока это выглядит хорошо. Единственная проблема заключается в том, что град притягивает исходные банки/почтовые индексы и javadoc jars/zip в мою папку WEB-INF/lib/моей войны.Gradle war плагин тянет в javadoc и источники

Я думал, что это может быть проблема с Idea, но с теми же результатами с командной строкой. Думаю, это связано с конфигурацией зависимостей? Я использую области компиляции и выполнения, и мои артефакты разрешены из Artifactory.

Может ли кто-нибудь указать мне направление, где исправить это?

Update:

Когда я создать задачу:

task copyAllDependencies(type: Copy) { 
    from configurations.runtime 
    into 'allRuntime' 
} 

или

task copyAllDependencies(type: Copy) { 
    from configurations.compile 
    into 'allCompile' 
} 

Я буду получать источники, а также. Таким образом, похоже, что это связано с конфигурацией компиляции/времени выполнения. Они тянут источники и javadoc. Но почему?!

Зависимости объявляются так:

dependencies { 
    compile   group: 'org.drools',     name: 'drools-core',   version: DROOLS_VERSION 
    compile   group: 'org.drools',     name: 'drools-compiler',  version: DROOLS_VERSION 
    ... 

    runtime   group: 'net.sourceforge.barbecue',  name: 'barbecue',    version: '1.5-beta1', ext: 'jar' 
    ... 

    testCompile  group: 'org.fitnesse',  name: 'fitnesse',       version: '20130531' 
    ... 
} 
+0

Как вы заявляете о зависимостях? –

+0

Я просто свести к минимуму скрипт, чтобы определить репо, включить java и war плагин и определить зависимости, и это все равно то же самое! – Joschi

+0

Попробуйте 'gradle: mywarproject: dependencies' из командной строки. Являются ли перечисленные зависимостями 'javadoc' и' sources'? –

ответ

0

Вот еще одна попытка ... немного Hacky, но мог бы работать

configurations { 
    tempCompile 
    tempRuntime 
    tempTestCompile  
} 

dependencies { 
    tempCompile "org.drools:drools-core:${DROOLS_VERSION}" 
    tempRuntime "net.sourceforge.barbecue:barbecue:[email protected]" 
    tempTestCompile "org.fitnesse:fitnesse:20130531" 
    ... 

    compile configurations.tempCompile.asFileTree.matching { 
     exclude '**/*-sources.jar' 
     exclude '**/*-javadoc.jar' 
    } 
    runtime configurations.tempRuntime.asFileTree.matching { 
     exclude '**/*-sources.jar' 
     exclude '**/*-javadoc.jar' 
    } 
    testCompile configurations.tempTestCompile.asFileTree.matching { 
     exclude '**/*-sources.jar' 
     exclude '**/*-javadoc.jar' 
    } 
} 
+0

Это работает! :) Отлично, спасибо! Я уже перешел в репозиторий стиля maven. Теперь у меня проблема, что мои банки вставлены 2 или 3 раза. Но это еще одна проблема. Спасибо за все ответы! :) – Joschi

+0

У меня была ошибка копирования и вставки. Теперь все работает по своему желанию. Еще раз спасибо! Ты спас мой день :) – Joschi

0

Как мы обнаружили, в комментариях, ваши зависимости приносят в Javadoc и источников в зависимости переходными. Возможно, вы можете исключить их с помощью

configurations.all { Configuration config -> 
    ['com.group1', 'com.group2', ..., 'com.groupN'].each { groupId -> 
     config.exclude [group: groupId, classifier: 'javadoc'] 
     config.exclude [group: groupId, classifier: 'sources'] 
    } 
} 

Примечание: Я не пользователь плющ так селектор (классификатор: «Javadoc» и т.д.), возможно, потребуется настройки

+0

Эй, Лэнс, спасибо за предложение. Я думал о чем-то подобном, но, к сожалению, это не сработало. В нем указано, что для правила исключения для зависимостей требуется «группа» и/или «модуль». Например: [group: 'com.google.collections'] ". Я использую gradle 3.1. Может быть, «классификатор» разрешен? – Joschi

+0

Хм ... досадно, что вы не можете «подгонять» группу. Обновлено до жесткого кода groupid (надеюсь, не слишком много из них?) –

+0

Я думаю, проблема здесь в том, что gradle использует DefaultExcludeRule здесь. Это правило имеет только «группу» и «модуль» как свойство, поэтому я не могу указать «классификатор».Я просто пытался управлять им с помощью DependencyResolveDetails, но это тоже не сработало. Трудно поверить, что так сложно это сделать: D – Joschi

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