以下的內容只是作爲自己學習的一個記錄,如果有錯或者涉及您的內容,請私信告知,不喜勿噴!謝謝!
當你在本地電腦上用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進程!