读书人

应用maven打出独立应用程序的jar包

发布时间: 2012-11-08 08:48:11 作者: rapoo

使用maven打出独立应用程序的jar包
Java独立应用程序的执行有两种方式:
 java -jar 命令
和 java -classpath 命令

其中,因为java -jar 不接收classpath参数(或者说-classpath对它不起作用),因此必须把所有依赖的文件都打到一个jar里(比如 One jar)。这样就存在一个问题:修改这个独立应用程序的配置文件会很不方便。(ps:当前路径是它的类路径)。
所以除非不用配置信息或从命令行指定配置信息,更好的方式应该是使用java -cp(即-classpath)的方式,并从类路径中读取配置文件。

那么,一个独立应用程序的目录结构可以是如下形式:
1、一个lib文件夹用于存放这个独立应用程序所依赖的jar包。
2、把这个独立应用程序所依赖的配置文件(而且是可能需要修改的)放在与jar包同级目录下。
3、一个jar包,里面是主程序。

若要执行这个独立应用程序,可以使用脚本拼出classpath的值,然后调用java -cp 命令。

在Linux下使用shell脚本:


cpappend.bat是不是见过?没错,tomcat下的,直接从那抄的,dos的批处理的写法我是没研究明白。

set CLASSPATH=%CLASSPATH%;lib/%1后面不要有空格。

注:类路径中,最好把配置文件的路径放在jar文件的路径之前,因为我们实际项目中遇到过:有的jar包中包含同名配置文件把我们自己的配置文件给覆盖了的情况。改一下在classpath中的顺序,这样就可以让程序优先使用我们的配置文件。

这样,方便修改配置的独立应用程序的执行方法已经出来了。下面的问题是,那些依赖的jar包,以及配置文件谁来拷出来?用maven来做这件事是最方便不过的了。
使用maven的resources插件。
下面我们要做的就是:在使用maven打包时,把程序依赖的jar包都拷出来,配置文件拷出来。同时,因为要使用外部的配置文件,所以要避免把配置文件打到jar包里。pom里的配置如下:
<pluginManagement>  <plugins>    <plugin>      <groupId>org.apache.maven.plugins</groupId>      <artifactId>maven-resources-plugin</artifactId>      <version>2.3</version>      <configuration>      <encoding>UTF-8</encoding>      </configuration>    </plugin>  </plugins></pluginManagement>
1 楼 daur 2011-08-24 谢谢~~受用了~~

读书人网 >软件架构设计

热点推荐