我们正在考虑将我们的Ant构建转换为Gradle。
关于与Eclipse的集成,我们正在寻找(概念上)相当于从IDE启动构建的功能。 Eclipse提供了一个不错的Ant视图来调用Ant目标。
有一个Eclipse插件可用于启动Gradle构建(http://www.breskeby.com/downloads/gradle/eclipse/update/),但似乎需要用户通过跳过一些步骤才能调用不同的目标(编辑启动配置等)。
其他人如何在Eclipse中使用Gradle?
我们正在考虑将我们的Ant构建转换为Gradle。
关于与Eclipse的集成,我们正在寻找(概念上)相当于从IDE启动构建的功能。 Eclipse提供了一个不错的Ant视图来调用Ant目标。
有一个Eclipse插件可用于启动Gradle构建(http://www.breskeby.com/downloads/gradle/eclipse/update/),但似乎需要用户通过跳过一些步骤才能调用不同的目标(编辑启动配置等)。
其他人如何在Eclipse中使用Gradle?
这篇文章有些旧了,但是SpringSource STS团队推出了一个插件:http://static.springsource.org/sts/docs/latest/reference/html/gradle/
安装指南可以在这里找到:http://static.springsource.org/sts/docs/latest/reference/html/gradle/installation.html
到目前为止,我的使用经验非常好。对于纯Java项目,它工作得非常好。我在使用Gradle插件时,通过Eclipse生成正确的war文件时遇到了一些问题,但是Gradle本身却做得很好。我对Gradle和该插件相对较新,可能是我漏掉了什么细节。
对于那些害怕命令行的人,可以使用临时解决方案。
从Eclipse中,使用下拉菜单Run / External Tools / External Tools Configurations...
在左侧导航面板中选择"Program",然后单击工具栏上的"New launch configuration"按钮(我的工具栏中的第一个按钮)。
在选择了Main选项卡后,填写以下字段:
如果您使用的Gradle构建文件不是“build.gradle”,则添加参数"-b filename.gradle"。
完成后,您的开发人员可以使用Run / External Tools或工具栏按钮来启动Gradle Gui。他们可以在每次使用后关闭它,或者(为了避免启动延迟),将其最小化以节省空间。
简短回答是我们不会从Eclipse中调用gradle脚本。
我相信这个网站详细介绍了当前的工作情况,但目前似乎没有太多进展。
我有点好奇你想要从Eclipse中运行哪些任务。为什么不从命令行中运行任务呢?
回答这个问题的最佳方式是使用Gradle自己的Eclipse插件Buildship:
http://projects.eclipse.org/projects/tools.buildship
这是由Gradle团队支持和开发的,并将在未来不断改进。它还可以处理较旧版本(其功能基于Gradle版本可用性)。
编辑 2017-03-01: 发布Buildship 2.0后,整合变得更好了,我推荐使用它(除非您已经在使用IntelliJ,那么您已经设置好了)。 仍然存在一些缺少的功能,例如直接调试JavaExec任务和运行precompile/preimport任务的能力,但这些都在他们的Github问题列表中。
我知道这是一个老问题,但我仍然不认为Eclipse能够为你运行gradle构建。如果您使用Spring Gradle插件,那么您可以定义外部工具构建器在您需要时运行gradle,这是一个很好的开始。如果您有很多项目都是用gradle构建的,您甚至可以让gradle为您的eclipse项目添加此功能。虽然这可能需要整理,但您可以在gradle构建文件中添加类似以下内容:
apply plugin: 'eclipse'
eclipse {
project {
// Store a copy of the desired Gradle_Builder.launch file in a top-level 'master'
// directory. Then this code searches for it, and by copying it,
// adds the launch file to the specifc project that will run gradle
String launchFileNameOrig = '.externalToolBuilders/Gradle_Builder.launch'
String launchFileName = launchFileNameOrig
File launchFile = file(launchFileName)
boolean needToCopy = false
while (!launchFile.exists()) {
launchFileName = '../' + launchFileName
launchFile = file(launchFileName)
needToCopy = true
}
if (needToCopy) {
copy {
from (launchFile)
into '.externalToolBuilders'
}
}
buildCommand 'org.eclipse.ui.externaltools.ExternalToolBuilder', LaunchConfigHandle: '<project>/'+launchFileNameOrig
file {
// when they made the "buildCommand" it looks like they left off 'triggers', so parse the XML until
// the right place is found, then insert it.
withXml {
def projectNode = it.asNode()
projectNode.iterator().each { subNode ->
String subNodeText = '' + subNode
if (subNodeText.startsWith('buildSpec')) {
subNode.iterator().each { buildCmd ->
String nameNode = buildCmd?.name
if (nameNode.contains('ExternalToolBuilder')) {
buildCmd.appendNode('triggers', 'full')
}
}
}
}
}
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramBuilderLaunchConfigurationType">
<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${workspace}"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${git_dir}/../gradlew"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="assemble"/>
<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${project_loc}"/>
</launchConfiguration>
task antDeps {
ant.importBuild 'build.xml'
}
task buildAll (dependsOn:['buildProj']) {
// the rest of your gradle task here.
}
您可以使用Gradle Eclipse插件,例如gradle eclipse
命令,从gradle项目生成Eclipse项目。它为生成的Eclipse项目添加了许多目标,并且高度可定制。
https://github.com/de-jcup/egradle
也不需要项目具有特定的性质,只需要存在build.gradle
文件即可。