以下的内容只是作为自己学习的一个记录,如果有错或者涉及您的内容,请私信告知,不喜勿喷!谢谢!
当你在本地电脑上用eclipse写了一个普通的maven工程,而且将来要放到服务器上,你就需要用到maven的打包,由于是一个普通的java项目,所以只需打包成jar包就可以了(web项目需要打包成war包).我们只需要在pom.xml上加上相应的插件就可以了,最后我选择了maven-shade-plugin这种方式用来打包.在我第一次接触的时候,我用到了二种打jar包的插件,maven-assembly-plugin和maven-shade-plugin.pom.xml内容如下
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-5</version>
<configuration>
<archive>
<manifest>
<mainClass>com.xxx.xxx</mainClass> 包含main方法的类
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef> 将依赖包一起打包
</descriptorRefs>
</configuration>
<executions>
<execution> 执行器 mvn assembly:assembly
<id>make-assembly</id> 是个名字,可以任意
<phase>package</phase> 绑定到package生命周期阶段上
<goals>
<goal>single</goal> 只运行一次
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>:</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.xxx.xxx</mainClass>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.handlers</resource>
</transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>META-INF/spring.schemas</resource>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
上述两种方法中的mainclass标签是你写的项目中,包含main方法的类,至于我为什么最终会选择maven-shade-plugin这种方式,是因为之前在使用maven-assembly-plugin的时候,在本地运行没有任何问题,而当我们放到linux上运行jar包的时候,就会出现错误Unable to locate Spring NamespaceHandler for XML schema namespace[http://www.springframework.org/schema/context]等等之类的错误,错误原因大概是因为由于项目中用到了spring框架,而当我们在项目中使用spring的多个内容的时候,包含了相同名字的文件,通过看网上的解决办法,发现maven-shade-plugin这个插件的打jar包方式可以解决该问题,上述pom.xml上的<transformer>标签中的内容就是解决该问题的!
另外将自己将jar包上传到linux的一些内容记录一下:使用的是SecureCRTPortable工具中的SFTP方式,找到自己本地电脑jar包的存放位置,命令是lcd+存放路径,然后使用 put+该jar包名字 的方式进行上传,linux上运行jar包方法 java -jar -xxx,命令中的xxx是jar包名字,ps -ef | grep java 可以看到正在运行的java进程!