2014-12-01 4 views
0

Мне было поручено написать некоторые базовые классы для автоматических тестов интеграции для существующего проекта, и я столкнулся с проблемой с зависимостями проекта.Ресурсы проекта Gradle не добавлены в Classpath

The (отведенной) макет проекта заключается в следующем:

project/
    MainProject 
    Plugins/
     ... 
    ConfigurationProject 
    IntegrationTestProject 

IntegrationTestProject имеет зависимость от ConfigurationProject, причем последний имеет следующий макет:

ConfigurationProject/ 
    PluginConfigs/ 
     <plugin configuration files> 
    <main configuration files> 

Следует отметить, что основные конфигурационные файлы находятся в корень проекта. В попытке добавить их в путь к классам, мой основной build.gradle имеет следующее:

project('ConfigurationProject') { 
    description = 'Configuration' 
    sourceSets.main.resources.srcDir projectDir 
} 

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

Однако, когда я действительно хожу для запуска интеграционных тестов, ресурсы ConfigurationProject, похоже, не находятся в пути к классам, поскольку он не может извлекать информацию о конфигурации, что подтверждается отсутствием ConfigurationProject, присутствующим в выводах этого фрагмента:

public void classpathScanner() { 
    ClassLoader c=getClass().getClassLoader(); 
    System.out.println("c="+c); 
    URLClassLoader u=(URLClassLoader)c; 
    URL[] urls=u.getURLs(); 
    for (URL i : urls) { 
     System.out.println("url: "+i); 
    } 
} 

ConfigurationProject входит в IntegrationTestProject с использованием IntegrationTestProjects gradle.build

dependencies { 
    compile project(':ConfigurationProject') 
} 

Я только наблюдал эту проблему при добавлении корня проекта в качестве ресурса, ADDN g вложенных папок проекта в sourceSets кажется прекрасным (и используется в другом месте в этом проекте). Перемещение файлов конфигурации во вложенную папку - это вариант, который я рассмотрел, и будет действовать, если не найду другого решения, но я хотел посмотреть, есть ли варианты, которые не включали этот курс действий.

+0

Корень проекта не следует добавлять в папку ресурсов. Лично я придерживаюсь стандарта src/main/resources –

ответ

0

Ответ на это по существу: «Не делайте корень проекта в папке с ресурсами, Gradle ненавидит это, и даже если это не так, это плохая форма». Я исправил это, поставив файлы конфигурации в более разумные путь ресурса.

+0

Это так или иначе связано с https://issues.gradle.org/browse/GRADLE-3096? –

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