我希望能够使用Gradle(或类似的东西)从Maven Central等下载,添加和管理3rd party库,而不必用Gradle构建(编译)我的项目。 (这是一个Eclipse GWT应用程序,我相信我需要保留现有的Eclipse GWT插件构建过程,以保持代码热交换功能)。
我希望将这些jar放入“WebContent / WEB-INF / lib”目录中并添加到我的构建路径中,以便即使不是“Gradle项目”,也可以立即开始使用这些lib。
这可能吗?如果可以,怎么办?
(我尝试将build.gradle添加到我的项目根目录,添加依赖项,然后从命令行调用“gradle build”。它说“BUILD SUCCESSFUL”(但显然.jars并未添加到我项目的classpath等),但这距离目前为止还很远,我不确定自己走的路是否正确。当我尝试右键单击该项目并调用Gradle> Tasks Quick Launcher时,它会显示“所选项目不是Gradle项目”)。
最佳答案
您想要实现的目标是可能的,但绝对不能使用gradle。您应该使用gradle war插件(或者可能存在GWT
项目的任何插件-机会非常高),但是因为我不知道它如何(以及是否)与Eclipse管理的项目GWT
无缝集成,我不会推荐它。
幸运的是gradle是非常灵活的系统,无需应用任何插件即可完成。
以下脚本只是概念的证明,但可以轻松扩展:
repositories {
mavenCentral()
}
configurations {
eclipse
eclipseRt
}
dependencies {
eclipse 'com.google.guava:guava:18.0'
eclipseRt 'javax.servlet:servlet-api:2.5'
}
task copyToWebInfLib(type: Copy) {
from configurations.eclipse
into 'WEB-INF/lib'
}
task modifyEclispeClasspath << {
//here add dependencies from *both* configurations
//to eclipse classpath
}
说明:
首先,您需要添加适当的存储库,其中保留了所需的依赖关系。您可以添加多个存储库。
然后,您需要定义两个配置(配置基本上是依赖集的名称)。为什么两个?因为您需要提供开发和复制到
WEB-INF/lib
(例如guava)以及开发(例如servlet api-由servlet容器提供)所必需的依赖关系。上面提到的War
插件可以为您处理此操作(providedCompile和provedRuntime配置),但是在这里您需要自己创建配置。您可以稍后更改名称。现在出现依赖项块。在这里,您声明了在项目中使用的依赖项,但请记住用适当的配置名称标记它们。
最后,您需要一个任务(类型为
Copy
)来解决依赖关系-仅将那些标记为eclipse(配置名称)的任务复制到WEB-INF/lib
文件夹中。第二项任务是修改适当的Eclipse配置文件。由于我每天都不使用eclipse,所以我不知道如何修改文件。但是您只需要知道格式并可能使用XmlSlurper
例如添加适当的行即可。 (AFAIK eclipse 文件以XML格式保存)。总的来说就是这样。随时提出其他问题。使用gradle wrapper也是一个好主意,但这是一个附加步骤。
关于eclipse - 如何在Eclipse中将来自Maven Central等的库添加到现有的非Gradle,非Maven项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26323213/