Gradle脚本对Java项目工程编译,打包,运行和发布具体过程详例

转自:http://blog.csdn.net/zxhoo/article/details/11982557

MyGroovyConsole工程

为了演示Gradle的基本功能,我创建了一个简单的Java Swing应用程序,这个程序类似Groovy自带的GroovyConsole,只不过更简单而已。截图:


创建MyGroovyConsole

Gradle按照Convention over configuration原则设计,所以只要我们也遵守这个原则,创建下面的目录结构,一个标准Java工程就诞生了:

Gradle build脚本

build.gradle是Gradle默认的build脚本,类似于Ant的build.xml或者Maven的pom.xml:

[java]  view plain copy
  1. apply plugin: 'java'  
  2. apply plugin: 'application'  
  3. sourceCompatibility = '1.7'  
  4. [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'  
  5.   
  6. mainClassName = 'com.xxx.MyGroovyConsole'  
  7.   
  8. repositories {  
  9.     mavenCentral()  
  10. }  
  11.   
  12. dependencies {  
  13.     compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.1.7'  
  14.     testCompile group: 'junit', name: 'junit', version: '4.10'  
  15. }  
这其实就是一个Groovy脚本,只不过里面写的是Gradle的 DSL

[java]  view plain copy
  1. apply plugin: 'java'  
这行代码告诉Gradle加载java插件。

[java]  view plain copy
  1. repositories {  
  2.     mavenCentral()  
  3. }  
这段代码说我们想从 Maven Central Repository 获取依赖。

[java]  view plain copy
  1. dependencies {  
  2.     compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.1.7'  
  3.     testCompile group: 'junit', name: 'junit', version: '4.10'  
  4. }  

这段代码说明项目依赖groovy-all-2.1.7.jar和junit-4.10.jar


Gradle settings脚本

rootProject.name = 'MyGroovyConsole'


添加MyGroovyConsole.java

MyGroovyConsole项目很小,只有一个Java文件:

[java]  view plain copy
  1. package com.xxx;  
  2.   
  3. import groovy.lang.GroovyShell;  
  4. import groovy.ui.ConsoleTextEditor;  
  5. import java.awt.BorderLayout;  
  6. import java.awt.event.ActionEvent;  
  7. import java.awt.event.ActionListener;  
  8. import javax.swing.BorderFactory;  
  9. import javax.swing.JButton;  
  10. import javax.swing.JFrame;  
  11. import javax.swing.JPanel;  
  12. import javax.swing.JTextArea;  
  13. import javax.swing.UIManager;  
  14. import javax.swing.UnsupportedLookAndFeelException;  
  15. import javax.swing.plaf.nimbus.NimbusLookAndFeel;  
  16.   
  17. public class MyGroovyConsole extends JFrame {  
  18.       
  19.     private JButton runScriptButton;  
  20.     private JTextArea output;  
  21.     private ConsoleTextEditor scriptEditor;  
  22.       
  23.     public MyGroovyConsole() {  
  24.         super("My Groovy Console");  
  25.         super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  26.           
  27.         createComponents();  
  28.         super.setContentPane(createContentPane());  
  29.         super.pack();  
  30.         super.setLocationRelativeTo(null);  
  31.     }  
  32.       
  33.     private void createComponents() {  
  34.         scriptEditor = new ConsoleTextEditor();  
  35.         scriptEditor.getTextEditor().setPreferredSize(  
  36.                 new JTextArea(1040).getPreferredSize());  
  37.           
  38.         output = new JTextArea(640);  
  39.         output.setEditable(false);  
  40.           
  41.         runScriptButton = new JButton("Run");  
  42.         runScriptButton.addActionListener(new ActionListener() {  
  43.   
  44.             @Override  
  45.             public void actionPerformed(ActionEvent e) {  
  46.                 String text = scriptEditor.getTextEditor().getText();  
  47.                 if (text != null && !text.trim().isEmpty()) {  
  48.                     GroovyShell shell = new GroovyShell();  
  49.                     //shell.setProperty("output", output);  
  50.                     //shell.evaluate("def log(arg) { output.append(arg); }");  
  51.                       
  52.                     Object result = shell.evaluate(text);  
  53.                     if (result != null) {  
  54.                         output.append(result + "");  
  55.                     }  
  56.                 }  
  57.             }  
  58.               
  59.         });  
  60.     }  
  61.       
  62.     private JPanel createContentPane() {  
  63.         JPanel panel = new JPanel(new BorderLayout(44));  
  64.         panel.setBorder(BorderFactory.createEmptyBorder(4444));  
  65.         panel.add(runScriptButton, BorderLayout.PAGE_START);  
  66.         panel.add(scriptEditor, BorderLayout.CENTER);  
  67.         panel.add(output, BorderLayout.PAGE_END);  
  68.         return panel;  
  69.     }  
  70.       
  71.     public static void main(String[] args) throws UnsupportedLookAndFeelException {  
  72.         UIManager.setLookAndFeel(new NimbusLookAndFeel());  
  73.         new MyGroovyConsole().setVisible(true);  
  74.     }  
  75.       
  76. }  
把这个Java文件放到src\main\java\com\xxx目录下。代码比较简单,就不做说明了。

Build MyGroovyConsole

打开命令行窗口,cd到MyGroovyConsole工程目录,执行gradle build命令,可以看到类似下面的输出:


build任务(task)是java插件提供的,可以看到,Gradle先后执行了很多任务。build成功后,MyGroovyConsole工程目录下面会多一个标准的build子目录:


运行MyGroovyConsole 

在命令行里执行 gradle run

发布MyGroovyConsole

执行installApp任务:gradle installApp,执行完后,build目录下会多出一个install目录:

Gradle的application插件为我们创建了这个目录,甚至还生成了Windows版和Unix/Linux版启动脚本。在Windows下,双击MyGroovyConsole.bat即可启动程序。

如果想以压缩包的形式发布程序,只要执行distZip任务即可,执行完后,可以在build/distributions目录下找到MyGroovyConsole.zip:

执行distZip任务:gradle distZip


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值