gradle:自定义jar任务

时间:2011-02-24 19:48:32

标签: jar gradle

我觉得我在这里遗漏了一些明显的东西,但我似乎无法找到它。

我有一个项目,我希望我的包结构如此

/src
    /webapp
        /webapp-package-1
        /webapp-package-2
    /iface
        /iface-package-1
        /iface-package-2

我想定义一个任务,用于打包iface的类并使其成为一个jar。所以我在这里遵循了用户指南:http://www.gradle.org/0.8/docs/userguide/userguide_single.html#configureSourceSet(我使用的是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。

想法?

1 个答案:

答案 0 :(得分:3)

此解决方案似乎适用于最新版本的Gradle(0.9.2)。我完全按照上面的说明运行intTestJar任务(当然是添加java插件):

└── iface
    └── ifacePackageOne
        ├── Test.java
        └── testFile.txt

这是生成的jar结构:

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

所以简短的回答 - 尝试更新版本的Gradle。 http://gradle.org/