maven 打可执行jar

来源:互联网 发布:公共基础知识考试软件 编辑:程序博客网 时间:2024/05/02 01:03

做个短信项目全是socket,突然发现自己好像只会打war包,都是给tomcat 或者jetty用的

下面就讲一下怎么打一个可执行的jar


可执行jar 中有个MANIFEST.MF 文件指明了开始的入口,和lib等,内容如下


Manifest-Version: 1.0
Built-By: lxn
Build-Jdk: 1.7.0_79
Class-Path: lib/jcl-over-slf4j-1.7.12.jar lib/slf4j-api-1.7.12.jar lib
 /log4j-over-slf4j-1.7.12.jar lib/jul-to-slf4j-1.7.12.jar lib/logback-
 classic-1.1.3.jar lib/logback-core-1.1.3.jar
Created-By: Apache Maven 3.2.2
Main-Class: com.bestpay.smgptest.newDemo.LongConnectionTest
Archiver-Version: Plexus Archiver


这个文件主要使用maven 中的 maven-jar-plugin 

   <plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-jar-plugin</artifactId>                <version>2.4</version>                <configuration>                    <archive>                        <manifest>                            <addClasspath>true</addClasspath>                            <classpathPrefix>lib/</classpathPrefix>                            <mainClass>${mainClass}</mainClass>                        </manifest>                        <!--<manifestEntries>-->                            <!--<Class-Path>lib/SmsProtocol-2.0.jar</Class-Path>-->                        <!--</manifestEntries>-->                    </archive>                </configuration>            </plugin>



这里,mainClass 是程序的入口main函数所在类,我这里使用了profile,你可以直接写该类名,其中注释掉的 manifestEntries 可以手动添加一些其他 lib


好了,你的项目已经可以打包出带MANIFEST.MF 的项目了

然后因为我们要部署到服务器,一些lib也得拷贝过去

可以使用下面的插件:

<plugin>                <groupId>org.apache.maven.plugins</groupId>                <artifactId>maven-dependency-plugin</artifactId>                <version>2.8</version>                <executions>                    <execution>                        <id>copy</id>                        <phase>package</phase>                        <goals>                            <goal>copy-dependencies</goal>                        </goals>                        <configuration>                            <outputDirectory>${project.build.directory}/lib</outputDirectory>                        </configuration>                    </execution>                </executions>            </plugin>


这个插件可以帮我们把依赖的jar 拷贝到 指定位置,这里拷贝到了 target/lib 下

最后我们可以在使用maven 打包后,将jar 和lib 一起复制到linux 上 然后 使用 java -jar xxx.jar的方式运行





0 0
原创粉丝点击