gradle:自定义 jar 任务

发布于 2024-10-19 03:00:01 字数 1339 浏览 4 评论 0原文

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

我有一个项目,我希望我的包结构像这样,所以

/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。

有想法吗?

I feel like I am missing something obvious here, but I can't seem to find it.

I have a project, where I want my package structure like so

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

I want to define a task that packages up the classes for iface and makes it into a jar. So I followed the user guide here: http://www.gradle.org/0.8/docs/userguide/userguide_single.html#configureSourceSet (I am using version 0.8).

I now have this,

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
}

And can verify that the classes in intTest are being built appropriately in /build/classes/intTest. However, trying to invoke the intTestJar always gives me this warning:

[ant:jar] Warning: skipping jar archive C:\workspace\foo\build\libs\foo-1.0.jar because no files were included.

I don't understand this, because the classes are being created successfully. Also, the full build task creates the entire jar successfully.

Ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我要还你自由 2024-10-26 03:00:01

该解决方案似乎适用于最新版本的 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/

This solution appears to work with the latest version of Gradle(0.9.2). I ran the intTestJar task exactly as shown above(adding the java plugin of course) on this file tree:

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

and here's the resulting jar structure:

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

So the short answer - try a newer version of Gradle. http://gradle.org/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文