maven打可運行jar包的兩種方式java
maven經常使用的普通打包方式分爲pom,jar,war等,至於這些打包類型就不介紹啦。spring
若是不進行特殊配置,那麼打包出來的jar包是不可運行的。只能看成普通依賴包使用。apache
下面就介紹兩種maven打可運行jar包的方式:maven
方式一:內置打包法ide
<plugins> <!-- 內置打包法 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <!-- 用這個maven打包插件 --> <artifactId>maven-shade-plugin</artifactId> <version>2.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <!-- 默認值爲true.注意這個屬性,若是你用這個插件來deploy,或者發佈到中央倉庫,這個屬性會縮減你的pom文件,會把你依賴的<dependency>幹掉 --> <createDependencyReducedPom>false</createDependencyReducedPom> <transformers> <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> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <!-- 這個是你的程序入口文件 --> <mainClass>com.alibaba.dubbo.container.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4</version> <configuration> <!-- 設置字符編碼集 --> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins>
上面使用maven install以後便可獲得一堆文件。ui
/target/目錄裏面找一下,便可找到一個<你的項目名>.jar編碼
這個包比較大(你的依賴包+實體類=總大小),能夠直接運行spa
運行例子:java -jar 文件路徑/<你的項目名>.jar插件
方式二:使用外部依賴包法orm
<plugins> <!-- 打包jar文件時,配置manifest文件,加入lib包的jar依賴 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <classesDirectory>target/classes/</classesDirectory> <archive> <manifest> <mainClass>com.alibaba.dubbo.container.Main</mainClass> <!-- 打包時 MANIFEST.MF文件不記錄的時間戳版本 --> <useUniqueVersions>false</useUniqueVersions> <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> </manifest> <manifestEntries> <Class-Path>.</Class-Path> </manifestEntries> </archive> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <type>jar</type> <includeTypes>jar</includeTypes> <useUniqueVersions>false</useUniqueVersions> <outputDirectory> ${project.build.directory}/lib </outputDirectory> </configuration> </execution> </executions> </plugin> </plugins>
上面使用maven install以後便可獲得一堆文件。
/target/目錄裏面找一下,和上面不同的是,你會發現<你的項目名>.jar沒那麼大。
並且還會有一個文件夾叫lib,而這個lib文件夾內全是你的依賴jar包
那麼在使用的時候,<你的項目名>.jar會去加載外部的lib裏面的jar包。
在部署項目的時候呢,你須要把lib文件夾和<你的項目名>.jar一塊兒拷貝去使用
注意:兩個須要是同目錄下噢
運行例子:java -jar 文件路徑/<你的項目名>.jar