关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署

        用 Eclipse 写了一个可以执行的 Java Project 项目,是一个数据库性能自动测试的项目,有很多配置文件,比如数据库的 log4j.properties,日志的 log4j.properties,Spring 的 applicationContext.xml 文件,还有 iBatis 的 MySqlMapConfig.xml 等等,如果打成可运行的一个 jar 包的话,比如 How to Create an Executable File from Eclipse 中介绍的,方便是方便,但并不是可以配置的,用户如果想修改下配置文件,又要重新打包。本文介绍如何使用 Eclipse 打包,并且修改配置文件无需重新打包,一个便捷一些的可运行项目的部署方法。
        1. 新建目录 TestMysql
关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署_第1张图片
        将 Java Project 下的各种配置文件拷贝到 TestMysql 目录中,然后在 TestMysql 目录中新建 lib 文件夹以存放运行包及各依赖包,新建 logs 文件夹存放日志,新建 resource 存放 iBatis 配置文件,如下图所示:
关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署_第2张图片
        其中,resource 目录中新建和 Java Project 目录下 iBatis 包一样结构的目录,然后将 iBatis 配置文件考入,如下图所示:
iBatis 配置
        2. 配置日志
        可以参考《 关于服务器项目日志的一个便捷处理》,本文使用了以下方案:
log4j.appender.logServicefile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logServicefile.File=logs/TestMysql
log4j.appender.logServicefile.DatePattern=yyyy-MM-dd-HH'.log'
log4j.appender.logServicefile.Append=true
log4j.appender.logServicefile.layout=org.apache.log4j.PatternLayout
log4j.appender.logServicefile.layout.ConversionPattern=[%5p] [data-migrate] %d{yyyy-MM-dd HH:mm:ss}: %-4r     [%t] ( %F,%L ) - %m%n

        这样,以后生成的日志将形如以下:
关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署_第3张图片
        3. 打 jar 包
        将项目所有依赖包考进 lib 目录,然后 Eclipse 下右击项目名 -> 点击 Export... -> 打开 Java,选中 JAR file,点击 Next 按钮 -> 将刚才新建的 lib 目录作为输出目录(如下图),点击 Finish。
关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署_第4张图片
        然后 lib 目录形如下图:
关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署_第5张图片
        4. 编辑启动脚本
        在 TestMysql 目录下新建 run.bat 文件和 run.sh 文件,编辑批处理文件 run.bat 内容如下:
@echo off  
set DIRNAME=.\
if "%OS%" == "Windows_NT" set DIRNAME=%~dp0%
if "%OS%" == "Windows_NT" set PROGNAME=%~nx0%
set "JAVA_HOME=D:\tools\Java\jdk1.6.0_22"
set JAVAC_JAR=%JAVA_HOME%\lib\tools.jar
setlocal enabledelayedexpansion
set "JAVA=%JAVA_HOME%\bin\java"
set OPTS=-Xms512M -Xmx1024M  -XX:+AggressiveOpts -XX:+UseParallelGC -XX:NewSize=64M
set LIBPATH=.\lib
set CP=%DIRNAME%;
rem set MAIN=com.arcsoft.nosql.data.task.mixture.ClientFileOfCloudQuery
set MAIN=com.defonds.mysql.TestMysql
rem set MAIN= com.arcsoft.nosql.data.test.MigrateMain

for /f %%i in ('dir/b %LIBPATH%\*.jar^|sort') do (set CP=!CP!%LIBPATH%\%%i;)

echo ===============================================================================  
echo.  
echo   Engine Startup Environment  
echo.  
echo   JAVA: %JAVA%  
echo.  
echo   JAVA_OPTS: %OPTS%  
echo.  
echo   CLASSPATH: %CP%  
echo.  
echo ===============================================================================  
echo.  
  
java %OPTS% -classpath %CP% %MAIN% 
rem java %OPTS% -classpath %CP% %MAIN% arg1 arg2
rem pause
rem exit

        注意 JAVA_HOME 要和你的本地安装一致,set MAIN=com.defonds.mysql.TestMysql 换成你自己的入口类;编辑 shell 脚本内容如下:
#!/bin/sh
PATH="$PATH:$JAVA_HOME/bin"
export PATH
CLASSPATH=.
for k in lib/*.jar
do
 CLASSPATH=$CLASSPATH:$k
done
export CLASSPATH
echo $CLASSPATH

java  -Xms512m -Xmx768m -classpath "$CLASSPATH" com.defonds.mysql.TestMysql

        注意 JAVA_HOME 默认你已经写进环境变量,set MAIN=com.defonds.mysql.TestMysql 换成你自己的入库类。
        你可以根据你自己的硬件情况调整 Xms 和 Xmx 等参数。
        5. 运行项目

        Linux 下的运行情况如下:

# ps -ef | grep java
root     2319  2318  0 13:51 pts/3    00:00:07 java -Xms512m -Xmx768m -classpath .:lib/commons-dbcp-1.4.jar:lib/commons-logging-1.1.1.jar:lib/commons-pool-1.5.5.jar:lib/hamcrest-core-1.3.jar:lib/hamcrest-library-1.3.jar:lib/ibatis-sqlmap-2.3.4.726.jar:lib/junit-4.10.jar:lib/mysql-connector-java-5.0.8-bin.jar:lib/spring-aop-3.1.1.RELEASE.jar:lib/spring-asm-3.1.1.RELEASE.jar:lib/spring-beans-3.1.1.RELEASE.jar:lib/spring-context-3.1.1.RELEASE.jar:lib/spring-context-support-3.1.1.RELEASE.jar:lib/spring-core-3.1.1.RELEASE.jar:lib/spring-expression-3.1.1.RELEASE.jar:lib/spring-jdbc-3.1.1.RELEASE.jar:lib/spring-jms-3.1.1.RELEASE.jar:lib/spring-orm-3.1.1.RELEASE.jar:lib/spring-tx-3.1.1.RELEASE.jar:lib/testmysql.jar com.defonds.mysql.TestMysql


你可能感兴趣的:(关于一个具有配置文件的 Java Project 项目(非 web 项目)在服务器上的一个便捷部署)