我们正在考虑将我们的Ant构建转换为Gradle。
关于与Eclipse的集成,我们正在寻找(概念上)从IDE启动构建的等效功能。 Eclipse提供了一个很好的Ant视图来调用Ant目标。
有一个用于启动Gradle构建的Eclipse插件(http://www.breskeby.com/downloads/gradle/eclipse/update/),但这似乎要求用户跳过箍来调用不同的目标(编辑启动配置等。)。
其他人如何在Eclipse中使用Gradle?
答案 0 :(得分:26)
这是一篇很老的帖子,但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和插件相对较新,所以它可能是我缺少的东西。
答案 1 :(得分:23)
临时工作对于那些有命令行恐惧症的人来说更加可口。
从Eclipse中,使用下拉菜单运行/外部工具/外部工具配置...
在左侧导航器面板中选择“程序”,然后单击工具栏中的“新建启动配置”按钮(工具栏中的第一个按钮)。
选择主要标签后,请填写以下字段:
添加到参数:如果使用“build.gradle”以外的Gradle构建文件,则切换“-b filename.gradle”。
在此之后,您的开发人员可以使用“运行/外部工具”或工具栏按钮启动Gradle Gui。他们可以在每次使用后关闭它,或者(为了避免启动延迟),在不使用时将其最小化。
答案 2 :(得分:15)
简短的回答是我们不会从Eclipse调用gradle脚本。
我相信this site概述了此项工作目前的工作情况,而且现在似乎并不多。
我有点好奇你想从Eclipse运行什么样的任务。为什么不从命令行运行任务?
答案 3 :(得分:10)
目前这个问题的答案应该是, 使用Gradle自己的Eclipse插件 Buildship :
http://projects.eclipse.org/projects/tools.buildship
这由Gradle团队支持和开发,并将在未来不断改进。它还可以处理旧版本(具有基于Gradle版本可用性的功能)。
编辑2017-03-01: 在Buildship 2.0发布之后,集成甚至更好,我推荐它(除非你已经使用IntelliJ,然后你已经设置)。 仍有一些功能缺失,例如直接调试JavaExec任务的能力以及运行预编译/预先导入任务的能力,但这些功能都在他们的Github issues list中。
答案 4 :(得分:8)
我知道这是一个老问题,但我仍然认为让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')
}
}
}
}
}
}
}
这是存储在目录层次结构顶部的文件的内容:./。externalToolBuilders/Gradle_Builder.launch。如此处所定义的,这只会在“干净”之后运行[Gradle比本机Java Builder更耗时,所以继续使用它来进行自动构建]。注意:下面的文件内容也假定您使用的是“git”和gradle包装器。您在ATTR_LOCATION值上看到此信息。根据需要调整。关于这种方法的一个好处是,你可以让gradle包装器成为你想要的任何版本的gradle,然后eclipse将在它运行时使用该版本!
<?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>
答案 5 :(得分:5)
您可以从eclipse创建一个自定义启动器,它将调用您的Gradle构建。
答案 6 :(得分:2)
您可以使用Gradle Eclipse plugin之类gradle eclipse
从gradle项目生成Eclipse项目。它为生成的Eclipse项目添加了许多目标,并且可以高度自定义。
答案 7 :(得分:2)
与以往一样,您最好使用IDEA。 自2009年以来一直支持http://blogs.jetbrains.com/idea/2009/08/gradle-support/
现在可以通过EAP获得更全面的支持(免费使用!) http://blogs.jetbrains.com/idea/2011/09/keen-to-try-gradle-integration-in-intellij-idea/
答案 8 :(得分:2)
您可以使用FkYkko所述的Buildship。但是,要记住的一件事是Ant任务被认为是gradle中的一等公民。这意味着您可以简单地导入ant构建脚本,引用其任务的方式与引用gradle任务的方式相同。通过这种方式执行操作,您只需使用gradle即可直接使用ant任务,而无需将其转换为gradle任务。
例如,假设您在build.gradle所在的目录中有一个名为build.xml的构建脚本,并且在build.xml中有一个名为buildProj的任务。您可以导入build.xml,并从build.gradle调用build proj,如下所示:
task antDeps {
ant.importBuild 'build.xml'
}
task buildAll (dependsOn:['buildProj']) {
// the rest of your gradle task here.
}
答案 9 :(得分:1)
还有Enide Gradle http://www.nodeclipse.org/projects/gradle
可与Pivotal使用或不使用Gradle IDE一起使用
在Gradle,Maven或CDT(C ++)项目中。
作为单独的插件,它可以具有不同的配置,可以使用Gradle版本和Java版本
这个Gradle IDE Pack在Enide
之内答案 10 :(得分:1)
我在安装了较新的Buildship插件后遇到了这个问题,该插件正在逐步淘汰其他人提到的Spring Tool Suite。
使用Buildship的任务视图的说明如下:
使用Gradle Tasks视图
成功导入Gradle项目后,项目显示在 Gradle Tasks视图。 通过右键单击Gradle Tasks视图中的某个Gradle任务,您可以运行选定的Gradle任务。
默认情况下,结果显示在Gradle Executions视图中。它 也会在控制台视图中显示类似于输出的输出 如果您通过命令行运行任务,请获取。
答案 11 :(得分:1)
2016年的另一个新项目是EGradle
https://github.com/de-jcup/egradle
同样不要求Project具有特殊性质,只需现有的namespace Bouncinglabels
{
using System.Windows.Forms;
class LabelBouncer
{
public Label MyLabel;
public bool GoingForward = true;
public void Move()
{
if (MyLabel != null)
{
if (GoingForward)
{
MyLabel.Left += 5;
}
else
{
MyLabel.Left -= 5;
if (MyLabel.Left <= 0)
{
GoingForward = true;
}
}
if (MyLabel.Right >= MyLabel.Parent.Width)
{
GoingForward = false;
}
}
}
}
}
即可。
用户指南位于内置帮助中( F1 )或预览https://rawgit.com/de-jcup/egradle/master/egradle-plugin-main/html/user_guide.html