我的公司最近写了gradle插件来进行原始配置(存储库,项目间的通用依赖关系等)。总体而言,这大大简化了我们的构建过程,并发现了项目之间的一些不一致之处。我们最近尝试向插件添加sourcesJar
任务,但该任务无法正常工作。
这是坏掉的插件:
package com.mycompany.plugins
import org.gradle.api.Project
import org.gradle.api.Plugin
import org.gradle.api.tasks.bundling.Jar
class OurJavaPlugin implements Plugin<Project> {
void apply(Project project) {
def date = com.mycompany.util.UtilityFunctions.getDate()
project.configure(project) {
println('Applying Java properties to: ' + project.name)
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
apply plugin: 'eclipse'
version = date
// Use the local repos
repositories {
maven {
url "$externalDependenciesRepo"
}
maven {
url "$internalDependenciesRepo"
}
}
uploadArchives {
repositories {
mavenDeployer {
// Deploy to internal repo
repository(url: "$internalDependenciesRepo")
}
}
}
// Common dependencies
dependencies {
compile group: 'log4j', name: 'log4j', version:'1.2.17'
compile group: 'org.slf4j', name: 'slf4j-log4j12', version:'1.6.6'
compile group: 'org.slf4j', name: 'slf4j-api', version:'1.6.6'
testCompile "junit:junit:$junit_version"
}
eclipse.project {
natures 'org.springsource.ide.eclipse.gradle.core.nature'
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
artifacts {
archives sourcesJar
}
}
}
}
除了之外,此插件都很好用sourcesJar
。当我将其添加到混合中(并编译/部署到我们的本地仓库)时,当我尝试构建使用插件的项目时出现此错误:
$ gradle :myProject:clean -x Test
Applying Java properties to: myProject
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\Users\me\Documents\code\root\myProject\build.gradle' line: 1
* What went wrong:
A problem occurred evaluating project ':myProject'.
> Failed to apply plugin [id 'customjava']
> Could not find method sourcesJar() for arguments [{type=class org.gradle.api.tasks.bundling.Jar, dependsOn=task ':analytics-isr:classes'}, com.mycompany.plugins.OurJavaPlugin $_apply_closure1$_closure6@4c1d59cd] on project ':myProject'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3.352 secs
在build.gradle
脚本中定义任务时,task
将调用方法中的一种(共4种)-您可以在此处看到第一个方法。您还可以看到,这些方法都没有与DSL匹配的,您在DSL中定义了任务build.gradle
。为什么?因为在执行之前会先build.gradle
评估所有内容,以
将 DSL 转换
为适当的方法调用。有关更多详细信息,请查看此问题。
提到的机制在自定义插件中不起作用-在这里,代码无需 翻译 就可以 按原样
解释。如您所见,在类上没有定义任何方法。要在插件中创建任务,您需要调用上述方法,例如:
__sourcesJar``Project``task
task('sourcesJar', type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
确切地调用此方法(我知道参数顺序不同,但这是常规的工作方式-
相信我)。
另外你不需要project.configure(project) {...}
,project.with {...}
就足够了。
我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本。 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在我的构建中。格拉德尔。 我的项目树如下所示: 我试图做的是在中创建我的任务/插件类,然后在。 让我举一个小例子。 TestTask。groovy: build.gradle 当我尝试使用我的gradle.build(清洁,构建等)做任何事情时,
问题内容: 我已经构建了自己的自定义react-bootstrap Popover组件: 该组件的呈现方式如下: 现在,我想向组件中添加自定义道具,例如:我的文字,并使用新道具在弹出框中设置一些内容,例如- 但随后我在浏览器中收到此警告: 警告:标签上的未知道具。从元素中删除这些道具。 现在,我想我可以删除零件并逐个插入所有原始道具,而无需自定义道具,但是这样我就失去了“淡入淡出”效果,这也是处理
试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b
对于maven,我可以很容易地添加我的自定义实现com.my.generator:customgenerator:1.0-snapshot in plugin dependency block, 但在gradle我不知道怎么做
我正在写一些gradle插件,现在我遇到了一个问题,DriverManager看不到buildscript依赖项中定义的JDBC驱动程序: 我有下一个build.gradle文件: 当我调用扩展DefaultTask的任务中定义的命令时
问题内容: 我正在研究启用AJAX的asp.net应用程序。我刚刚向Array.prototype添加了一些方法,例如 该解决方案对我有用,可以以“漂亮”的方式重用代码。 但是,当我测试了它与整个页面一起使用时,我遇到了问题。我们有了一些自定义的Ajax扩展程序,它们开始表现出意想不到的效果:某些控件在其内容或值上显示为“未定义”。 这可能是什么原因?我是否缺少修改标准对象原型的东西? 注意:我很