做个短信项目全是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>
好了,你的项目已经可以打包出带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的方式运行