5

我正在将遗留应用程序从 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 的类路径中,使其不包含在 Gradle 创建的 JAR 中?

4

2 回答 2

4

鉴于 Gradle 的EclipseClasspathAPI 的限制,我能想到的最直接的解决方案是声明src/main/conf为另一个源目录:

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

只要该目录不包含任何 Java 文件,就不会影响 Gradle 构建的结果。但是,该目录将在 Eclipse 中显示为源目录,因此其属性文件将被复制到 Eclipse 输出目录中。

于 2013-08-12T10:10:20.087 回答
1

另一个提示。如果您需要它在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")
            ])
        }
    }
于 2013-11-27T03:15:00.517 回答