Gradle – добавить папку в путь к классам Eclipse

Я переношу устаревшее приложение с Ant на Gradle. Требование состоит в том, чтобы создать zip-файл с определенной структурой папок, которая используется командой развертывания. Я могу создать zip-файл в правильном формате, пока все хорошо.

Я могу открыть проект в Eclipse, но не могу его запустить. В Eclipse (и IntelliJ) мне нужно, чтобы src/main/conf было добавлено в путь к классам Eclipse, но не было включено в JAR (например, если бы я запускал gradle jar).

Вот как сейчас устроен проект:

src
    /main
        /java
            /com
                /example
                    /App.java
        /resources
            /applicationConfiguration.xml
        /conf
            /dev.properties
            /staging.properties
            /prod.properties

Как я могу добавить папку conf в путь к классам Eclipse, чтобы она не была включена в JAR, который создает Gradle?


person vegemite4me    schedule 12.08.2013    source источник


Ответы (2)


Учитывая ограничения Gradle EclipseClasspath API, самое простое решение, которое я могу придумать, — это объявить src/main/conf еще одним исходным каталогом:

sourceSets.main.java.srcDir "src/main/conf"

Пока каталог не содержит файлов Java, это не повлияет на результат сборки Gradle. Однако этот каталог будет отображаться в Eclipse как исходный каталог, поэтому файлы его свойств будут скопированы в выходной каталог Eclipse.

person Peter Niederwieser    schedule 12.08.2013

Еще один совет. Если вам нужно, чтобы он работал в Eclipse WTP, я устанавливаю свойство sourceDirs для eclipse.wtp.component:

eclipse {

    project {
        natures 'org.eclipse.wst.common.project.facet.core.nature',
                'org.eclipse.wst.common.modulecore.ModuleCoreNature',
                'org.eclipse.wst.jsdt.core.jsNature'

        name 'blah-blah'

    }

    wtp {
        facet {
            facet type: 'fixed', name: 'wst.jsdt.web'
            facet name: 'java', version: '1.7'
            facet name: 'jst.web', version: '3.0'
            facet name: 'wst.jsdt.web', version: '1.0'
        }

        component {

            sourceDirs = new HashSet([
                    new File(project.getProjectDir().getAbsolutePath() + "/src/main/java"),
                    new File(project.getProjectDir().getAbsolutePath() + "/src/main/resources"),
                    new File(project.getProjectDir().getAbsolutePath() + "/src/main/conf")
            ])
        }
    }
person jasop    schedule 27.11.2013