2014-10-12 51 views
0

我希望能够使用Gradle(或类似的东西)下载,添加&管理来自Maven的第三方库中央等,但无需使用Gradle构建(编译)我的项目。 (这是一个Eclipse GWT应用程序,我相信我需要保留现有的Eclipse GWT插件构建过程以保持代码热切换功能)。如何从Maven Central等添加库到Eclipse中现有的非Gradle,非Maven项目

我想让jar进入我的“WebContent/WEB-INF/lib”目录并添加到我的构建路径中,这样即使它不是“Gradle项目”,我也可以立即开始使用这些库。

这可能吗?如果是这样如何?我已经尝试添加build.gradle到我的项目根目录,添加了依赖关系,然后从命令行调用“gradle build”,它显示“BUILD SUCCESSFUL”(但很明显,.jar不会添加到我的项目的类路径中等等),但是到目前为止,我还没有确定我是在正确的轨道上。当我尝试右键单击项目并调用Gradle> Tasks Quick Launcher时,它会显示“Selected项目不是Gradle项目“)。

回答

0

你想达到什么是可能的,但肯定不应该如何使用gradle。你应该使用gradle war插件(或者可能存在GWT项目的任何插件 - 机会非常高),但是因为我不知道如何(和如果)它与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(如番石榴)和仅用于开发(例如servlet api - 由servlet容器提供)所需的依赖关系。 War上面提到的插件为你处理这个(providedCompileprovidedRuntime配置),但在这里你需要自己创建配置。您可以稍后更改名称。

现在来到依赖关系块。在这里您声明了您在项目中使用的依赖关系,但请记住用适当的配置名称标记它们。

最后你需要(Copy型的)任务,以解决依赖关系 - 只有那些标有日食(配置名称)将被复制到文件夹WEB-INF/lib。第二项任务是修改适当的eclipse配置文件。由于我不每天使用eclipse,所以我不知道如何修改这些文件。但您只需要知道格式,并可能使用XmlSlurper(例如, (AFAIK eclipse文件保存为XML格式)。

一般来说就是这样。随意提出其他问题。使用gradle wrapper也是个好主意,但这是一个额外的步骤。

+0

这是你在找什么? – Opal 2014-10-13 06:25:09

+0

是的,有点。我想我需要检查我的类路径,如果该条目已经存在,并删除旧版本等。所以我假设没有什么自动在Gradle中为此? – Navigateur 2014-10-13 10:03:36

+0

有一个eclipse插件,但我不确定它是否适用于GWT项目,我想不是。我准备的实际上是半自动解决方案。你可以从classpath中删除所有的依赖关系,并用gradle来准备它们。 – Opal 2014-10-13 10:06:14

相关问题