Compile Java Codes in Linux Shell instead of Ant Script
The following is frequently used ant script, compile some java source codes with a libary path, then copy all non-java files to compiled folder:
<property name="src.dir" value="${basedir}/src" />
<property name="src.class.dir" value="${webroot.dir}/web-inf/classes" />
<path id="lib.path">
    <fileset dir="${webroot.dir}/web-inf/lib">
        <include name="**/*.jar" />
    </fileset>
</path>
<target name="compile-src" depends="init" description="compile java sources">
    <javac srcdir="${src.dir}" destdir="${src.class.dir}" encoding="utf-8"
            debug="true" classpathref="lib.path" failonerror="false"/>
    <copy todir="${src.class.dir}">
        <fileset dir="${src.dir}">
            <exclude name="**/*.java" />
        </fileset>
    </copy>
</target>
The corresponding shell script is:
src_dir=/vagrant/codes/GCP6.1/src
web_build=/vagrant/codes/web_build
class_dir=$web_build/web_server/webapps/GCP6.1/WEB-INF/classes
lib_dir=/vagrant/codes/GCP6.1/WebRoot/WEB-INF/lib
find $src_dir -type f -name "*.java" -exec javac -cp "$lib_dir/*:$src_dir" -d $class_dir {} \;
rsync -auC --exclude='*.java' $src_dir/ $class_dir/
Take care there's no folder named "core" in $src_dir, or it will be excluded by the "-C" option of rsync command.
A Test Case
$ tree
.
├── classes
├── lib
│   ├── libadd.jar
│   └── libmul.jar
├── libadd
│   └── com
│       └── boco
│           └── gcp
│               └── add
│                   ├── MyAdd.class
│                   └── MyAdd.java
├── libmul
│   └── com
│       └── boco
│           └── gcp
│               └── mul
│                   ├── MyMul.class
│                   └── MyMul.java
└── main
    └── com
        └── boco
            └── gcp
                ├── Test.java
                └── util
                    └── MyUtil.java
17 directories, 8 files
$ find . -name '*.java' -exec cat {} \; -exec echo "--------" \;
package com.boco.gcp.util;
import com.boco.gcp.add.MyAdd;
import com.boco.gcp.mul.MyMul;
public class MyUtil {
    public int newadd(int x, int y) {
        MyAdd add = new MyAdd();
        MyMul mul = new MyMul();
        return add.myadd(3,5) + mul.mymul(3,5);
    }
}
--------
package com.boco.gcp;
import com.boco.gcp.mul.MyMul;
import com.boco.gcp.add.MyAdd;
import com.boco.gcp.util.MyUtil;
public class Test {
    public static void main(String[] args) {
        MyMul mul = new MyMul();
        MyAdd add = new MyAdd();
        System.out.println(mul.mymul(3,5));
        System.out.println(add.myadd(3,5));
        MyUtil util = new MyUtil();
        System.out.println(util.newadd(3,5));
    }
}
--------
package com.boco.gcp.mul;
public class MyMul {
    public int mymul(int x, int y) {
        return 10*x*y;
    }
    public static void main(String[] args) {
        MyMul mul = new MyMul();
        System.out.println(mul.mymul(3,5));
    }
}
--------
package com.boco.gcp.add;
public class MyAdd {
    public int myadd(int x, int y){
        return 10*x+y;
    }
    public static void main(String[] args) {
        MyAdd add = new MyAdd();
        System.out.println(add.myadd(3,5));
    }
}
--------
$ find main -name '*.java' -exec javac -cp 'lib/*:main' {} -d classes \;
$ tree classes/
classes/
└── com
    └── boco
        └── gcp
            ├── Test.class
            └── util
                └── MyUtil.class
												
											Compile Java Codes in Linux Shell instead of Ant Script的更多相关文章
- java代码运行linux shell操作
		
1.Java调用shell Java语言以其跨平台性和简易性而著称,在Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运行的环境交互的接口,这就是 ...
 - Java 连接远程Linux 服务器执行 shell 脚本查看 CPU、内存、硬盘信息
		
pom.xml jar 包支持 <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch& ...
 - java使用Runtime.exec()运行windwos dos或linux shell命令
		
使用Runtime.exec()运行windwos dos或linux shell命令,按实际情况具体测试 实例代码: package com.bookoo.test.command; imp ...
 - Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比
		
Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...
 - java远程调用linux的命令或者脚本
		
转载自:http://eksliang.iteye.com/blog/2105862 Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar) 使用步骤如下 ...
 - java classpath批量设置shell脚本
		
java classpath批量设置shell脚本 注意:linux bash jar文件之间的分隔符是':' export JAR_HOME=path to directory which ...
 - linux shell 使用总结
		
为什么执行脚本要使用./ +脚本名来执行脚本理解:因为如果直接使用脚本名,那么linux 系统会去path 路径查找如去/bin usr/bin 等查找,这个时候会找不到这个脚本名字,就会报错.使用. ...
 - paip.注册java程序为LINUX系统服务的总结。
		
paip.注册java程序为LINUX系统服务的总结. ////////////////实现开机启动. 标准方法是按照/etc/init.d/下面的文件,修改一下:然后chkconfig xxx on ...
 - linux shell 流程控制
		
导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使 ...
 
随机推荐
- HDU 4445 Crazy Tank 高中物理知识忘得差不多了
			
题意不难理解,仔细看题吧,就不说题意了 #include <iostream> #include <cstdio> #include <cstring> #incl ...
 - [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构
			
[源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 目录 [源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构 0x00 摘要 ...
 - 学会这些CSS技巧让你写样式更加丝滑
			
目录 1,前言 1,calc() 2,min() 3,max() 4,clamp() 5,gap 6,writing-mode 1,前言 记录一些很好用的css属性 1,calc() calc()函数 ...
 - 『动善时』JMeter基础 — 54、JMeter聚合报告详解
			
目录 1.聚合报告介绍 2.聚合报告界面详解 3.聚合报告中信息点说明 (1)百分位数的说明 (2)吞吐量说明 提示:聚合报告组件的使用和察看结果树组件的使用方式相同.本篇文章主要是详细的介绍一下聚合 ...
 - ctf Decode
			
这题其实没啥好说的,就是直接解,听学长说好像网上有现成的轮子可以用,我太年轻了,手动写了个decode函数. 也成功得到了flag.嘿嘿开心
 - Acunetix与WAF集成:Acunetix和F5 BigIP ASM
			
该的Acunetix API让您有机会来实现任务自动化,从而提高效率-尤其是当你可以用加速您的工作流程的其他组件的功能整合.在此示例中,我们将在上一篇文章的基础上,向您展示如何在Bash脚本中使用Ac ...
 - FreeRTOS常用函数
			
一.任务 任务创建和删除xTaskCreate 任务创建xTaskDelete ...
 - FreeRTOS基本概念
			
1.在FreeRTOS中,使用的数据类型虽然都是标准C里面的数据类型,但是针对不同的处理器,对标准C的数据类型又进行了重新定义. 2.链表由节点组成,节点与节点之间首尾相连,节点包含用于指向后一个节点 ...
 - Ubuntu命令总结
			
sudo apt-get update 系统更新 shutdown -h now 关闭服务器 shutdown -r now 重启服务器 uname -a ubuntu中查看内核版本的命令 gedit ...
 - asp.net mvc中的安全性
			
1.重复提交攻击:通过Bind特性指定要绑定和不绑定的值. 2.Cookie盗窃:阻止脚本对站点中Cookie的访问,webconfig文件中添加<HttpCookies domain=&quo ...