小编ner*_*dis的帖子

Gradle:'clone'原始jar任务为包含依赖项的jar创建新任务

我想在我的项目中创建一个新任务,创建一个jar存档,其中包含项目的类文件和依赖项的类文件(也称为"shaded jar"或"fat jar").

Gradle cookbook提出的解决方案修改了JavaPlugin的标准jar任务:

jar {
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
Run Code Online (Sandbox Code Playgroud)

但是,我想保留原始的jar文件,并为shaed jar创建一个额外的任务,即一个行为与jar任务完全相同的任务,但包括附加的文件根据

from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
Run Code Online (Sandbox Code Playgroud)

并有另一个分类器('阴影').

我试图通过复制这样的属性来接管jar任务的配置:

task shadedJar(type: Jar, dependsOn: configurations.compile) {
    dependencies = tasks.jar.taskDependencies
    source = tasks.jar.source
    manifest = tasks.jar.manifest
    includes = tasks.jar.includes
    classifier = 'shaded'

    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
Run Code Online (Sandbox Code Playgroud)

但是生成的任务不会接管'jar'的依赖关系,并且生成的jar不包含项目的类文件.此外,这种方法似乎很麻烦,无法成为将现有任务用作新任务的模板的推荐方法.

对于我的特定需求(单独的shadedJar任务)和"克隆"任务,可以使用什么方法将它们用作一般其他任务的模板?

(我目前仍在使用Gradle 1.3,但欢迎使用当前Gradle版本的解决方案)

gradle

8
推荐指数
1
解决办法
6164
查看次数

RegExp(PCRE或Emacs):重复先前定义的组

RegExps是否有一种语法允许重复先前在同一RexExp中出现的组定义.请注意:我想再次'复制'组定义,我对前一组匹配的反向引用不感兴趣(即"\n"不是我要找的).

例如:我寻找的RegExp将匹配"spamniceggs","eggswithspam","spamlovelyspam","eggeggspam",但既不是"spamwithham"也不是"deliciousegg".

一个可能的PCRE RegExp将是:((?:spam)|(?:egg))\ w*((?: egg)|(?:spam))在这种情况下和类似情况下,避免显式重复会很好相同的组描述(DRY).因此,我正在寻找具有语义的假设运算符"~n",如下所示:应用重新应用与第n个捕获组相同的组描述.因此,示例RegExp可以表示为:(?:( ?: spam)|(?: egg))\ w*~1

有没有办法在这方面取得成果?

regex emacs perl pcre

2
推荐指数
1
解决办法
336
查看次数

标签 统计

emacs ×1

gradle ×1

pcre ×1

perl ×1

regex ×1