gradle:定制jar任务

gradle:定制jar任务,jar,gradle,Jar,Gradle,我觉得我错过了一些明显的东西,但我似乎找不到 我有一个项目,我希望我的包结构是这样的 /src /webapp /webapp-package-1 /webapp-package-2 /iface /iface-package-1 /iface-package-2 我想定义一个任务,将iface的类打包成一个jar。所以我在这里遵循了用户指南:(我使用的是0.8版) 我现在有这个 sourceSets {

我觉得我错过了一些明显的东西,但我似乎找不到

我有一个项目,我希望我的包结构是这样的

/src
    /webapp
        /webapp-package-1
        /webapp-package-2
    /iface
        /iface-package-1
        /iface-package-2
我想定义一个任务,将iface的类打包成一个jar。所以我在这里遵循了用户指南:(我使用的是0.8版)

我现在有这个

sourceSets {
    main {
        java {
            srcDir 'src'
        }
        resources {
            srcDir 'src'
        }
    }
    intTest {
        java {
            srcDir 'src/iface/'
        }
        resources {
            srcDir 'src'
        }
    }
    test {
        java {
            srcDir 'test'
        }
        resources {
            srcDir 'src'
        }
    }
}


task intTestJar(type: Jar, dependsOn: intTestClasses) {
    from sourceSets.intTest.classes
}
并且可以验证
intTest
中的类是否在
/build/classes/intTest
中正确构建。但是,尝试调用
intTestJar
总是会给我以下警告:

[ant:jar] Warning: skipping jar archive C:\workspace\foo\build\libs\foo-1.0.jar because no files were included.
我不明白这一点,因为类正在成功创建。另外,完整构建任务成功地创建了整个jar


想法?

此解决方案似乎适用于最新版本的Gradle(0.9.2)。我在这个文件树上运行了如上所示的intTestJar任务(当然是添加java插件):

└── iface
    └── ifacePackageOne
        ├── Test.java
        └── testFile.txt
下面是最终的jar结构:

├── META-INF
│   └── MANIFEST.MF
└── iface
    └── ifacePackageOne
        ├── Test.class
        └── testFile.txt

因此,简单的答案是——尝试更新版本的Gradle

开枪。我希望一直使用.8直到1.0版本,因为有一些小的语法变化,我们已经有一些使用gradle的项目,如果我的团队升级到.9,这些项目将需要更新,同时跨两个gradle版本不是很容易。但这可能会迫使我越界。谢谢。卢卡斯:考虑使用渐变包装纸。它应该让你不必太担心版本和升级。我可能错了,但你的项目似乎是一个多项目渐变配置的好候选人?