java makefile学习实践(编译的javac命令写在makefile中,运行命令java写在shell脚本中)...

Makefile实战教程
本文介绍如何使用Makefile简化Java项目的构建过程,包括简单的Java程序构建及包含外部依赖的大项目构建方法。通过具体示例,展示了如何编写Makefile来管理源文件、编译规则和清理任务,并介绍了如何设置classpath以引入外部jar包。

学习makefile教程,ubuntu中文网

1.写一个简单的java项目,不需要外部jar,用的简单的

import java.util.ArrayList;是可以从CLASSPATH环境变量中找到的,在javac阶段不需要特殊添加-cp

hellocat

Hellocat.java

import java.util.ArrayList;
import java.util.Iterator;
public class Hellocat{
    public static void main(String[] args){
        ArrayList list1 = new ArrayList();
        list1.add("one");
        list1.add("two");
        System.out.println("<--list1中共有>" + list1.size()+ "个元素");  
        System.out.println("<--list1中的内容:" + list1 + "-->");
        
        Cat mike = new Cat();
        mike.run();
        System.out.println(mike.name + "is running over\n");
    }
}

Cat.java

public class Cat{
    Cat()
    {
        this.name = "wali";
        this.age = 2;
    }
    public void run()
    {
        System.out.println("run run run\n");
    }
    public String name;
    public int age;
}

makefile

result : Hellocat.java Cat.java
    javac Hellocat.java
clean :
    rm -f Hellocat.class Cat.class

 

执行的时候还得输入java Hellocat,这个项目比较小无所谓,如果遇到大的项目,各种package,需要调整包目录,尤其是需要引入外部jar的,java运行命令需要指出-cp位置

2.比较大的项目,需要引入外部jar(netty4.1.25)

代码不方便展示,主要有两个主类,HelloWorldClient和HelloWorldServer

makefile:

SRCFILES := $(wildcard *.java)
CFLAGS := -cp /home/kourui/netty4125/netty-4.1.25.Final/jar/all-in-one/netty-all-4.1.25.Final.jar
result : $(SRCFILES)
    javac $(CFLAGS) HelloWorldServer.java ServerChannelInitializer.java ServerHandler.java
    javac $(CFLAGS) HelloWorldClient.java ClientChannelInitializer.java ClientHandler.java
clean :
    rm -f *.class

运行脚本:

startserver:(pwd可以忽略,当时是提示用的)

#!/bin/bash
#this script avaiable for starting server
pwd 
java -cp ..:/home/kourui/netty4125/netty-4.1.25.Final/jar/all-in-one/netty-all-4.1.25.Final.jar pkg.HelloWorldServer

startclient:

#!/bin/bash
#this script starts client
pwd
java -classpath /home/kourui/jmaketest/hellocs:/home/kourui/netty4125/netty-4.1.25.Final/jar/all-in-one/netty-all-4.1.25.Final.jar pkg.HelloWorldClient

这样运行时直接通过命令:

./startserver

./startclient

就方便了许多

 

转载于:https://www.cnblogs.com/CreatorKou/p/9180935.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值