非web工程,打jar放shell执行
作为6年经验的程序员,一直在搞web服务应用开发,今天领导被吐槽了,只会web方面的东东,最基本的打包啥啥都不会。。
一般开发工程都是web项目,突然要求开发非web,不用tomcat装(浪费端口号),脑子里其实第一反应就是打jar包。
废话不多说:整体思路,ant 打jar,注意,此处依赖的lib和config不要打进来,当然如果作为公共组件啥的可以打成一个jar。
Linux:
${JAVA_HOME}/bin/java -Xms256M -Xmx512M -cp .:./lib/*:./config/*:jarProj.jar com.gcc.Application
windows:中上面的冒号变成分毫:
${JAVA_HOME}/bin/java -Xms256M -Xmx512M -cp .;./lib/*;./config/*;jarProj.jar com.gcc.Application
工程目录:
启动入口:
package com.gcc; import org.apache.log4j.PropertyConfigurator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class Application { private static final Logger LOGGER = LoggerFactory.getLogger(Application.class); public static void main(String[] args) throws IOException { InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("config/log4j.properties"); PropertyConfigurator.configure(in); /* Properties p = new Properties(); p.load(in);*/ LOGGER.debug("haha {} ,xiao zi ...","debug"); LOGGER.info("haha {} ,xiao zi ...","info"); LOGGER.error("haha {} ,xiao zi ...","error"); } }
然后可以用ant打jar包,注意:不用把配置和依赖jar打进jar。配置和jar包,可以放再外面的config和lib包,写个思路吧。。。累
-------------------------------
通过idea打包可运行jar(第三方jar外部引用版)
extract to the target JAR是将第三方jar打入最终jar包。这里是外部引用,所以不勾选。
<output root> Create Directory>libs
最后Class path ,注意lib要删除。
查看MANIFEST.MF文件
Manifest-Version: 1.0
Class-Path: libs/log4j-1.2.17.jar libs/slf4j-api-1.7.2.jar libs/slf4j-
log4j12-1.7.2.jar
Main-Class: com.gcc.Application
build后,在windows本地运行下:前一个是libs不放第三方jar
-------------------------------------
顺便把可执行jar,外部jar打进最终jar也实验下。
运行结果