2012-07-11 46 views
1

我必须在我的ZIP包装中从存储库(比如本地)复制一个jar。我明白我们可以在依赖关系中定义编译/运行时。但是,我无法在ZIP中使用它们。Gradle压缩包装:从存储库复制Jar文件

我可以通过在文件系统中指定路径来复制jar文件。但是,我不知道如何从存储库中执行它。

这里是我的代码看起来是这样的:

task createZipFile (type: Zip, dependsOn: [...]) { 

    baseName 'xyz' 

    from(fileTree("src/main"), { 
     include "prjName/css/**" 
     include "prjName/images/**" 
     include "prjName/javascript/**" 
     include "prjName/WEB-INF/**" 
     exclude "prjName/WEB-INF/web.xml" 
    }) 

    from file("<Absolute-path-to-jar-file-in-my-filesystem>") //this works 
    // how to copy the same jar file from repository ?? 
} 

回答

3

假设你的依赖是在运行时配置即:

runtime 'org.slf4j:slf4j-log4j12:1.6.2' 

,你可以这样做:

task createZipFile(type: Zip, dependsOn: [...]) { 
    baseName 'xyz' 
    from fileTree("src/main"), { 
     include "prjName/css/**" 
     include "prjName/images/**" 
     include "prjName/javascript/**" 
     include "prjName/WEB-INF/**" 
     exclude "prjName/WEB-INF/web.xml" 
    } 

    from configurations.runtime.files { it.name == 'slf4j-log4j12' } 
} 

要添加所有罐子下载的名称为slf4j-log4j12

+0

非常感谢。我正在寻找类似的东西。如果我想复制多个罐子怎么办?我添加'OR'条件? – Chris 2012-07-11 10:12:43

+0

@Chris如果你想添加更多的话,它会复制'slf4j-log4j12''的所有jar依赖关系,我可能会添加更多的'from'行来轮流捕获这些依赖关系(或者你可以将这个依赖关系存储到一个方法中获取名称列表并将结果收集到文件列表中,所以您可以调用类似'from depFinder('slf4j-log4j12','something-else')' – 2012-07-11 10:18:24

+0

那么..我的情况有点不同在这里,我只想要我指定的罐子,我不想要它们的依赖关系,我只是检查它是在复制所有的依赖关系 – Chris 2012-07-11 10:25:40