Maven項目打包jar依賴外部jar


 

有時候我們想要做一些java 的小程序,需要把打包成jar,單獨執行,做一個maven項目,maven非常方便,有自動打包成jar的插件,但是有時候我們的項目可能會依賴其他的jar包,所以非常麻煩。

筆者最近遇到一個小問題,公司的工程有定時執行任務,有時候會出現不執行的情況或執行錯誤,所以需要些一個附加功能,可以人工手動執行。如果在頁面放按鈕重新執行一次,怕出現權限問題,寫webservice然后再寫外部的jar調用webservice,雖然很簡單,但是要在原來的項目上寫,寫完之后還要交給測試部測試,測試部測試之后還要領導審批,才能上線使用,所以決定寫一個外部的jar。

 

這是我的文件目錄,寫的一般,請諸君批評指正。

現在有點頭疼的是,成了一個jar,需要依賴很多外部的jar,在百度和自己嘗試之后,終於寫好了,pom配置中plugins如下:

<plugins>

 

 

           <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>com.coamctech.historyreport.App</mainClass>

                     </manifest>

                  </archive>

              </configuration>

           </plugin>

              <plugin> 

            <groupId>org.apache.maven.plugins</groupId> 

            <artifactId>maven-assembly-plugin</artifactId> 

            <version>2.4</version> 

            <!-- The configuration of the plugin --> 

            <configuration> 

                <!-- Specifies the configuration file of the assembly plugin --> 

                <descriptors> 

                    <descriptor>src/main/assembly/package.xml</descriptor> 

                </descriptors> 

            </configuration> 

            <executions> 

                <execution> 

                    <id>make-assembly</id> 

                    <phase>package</phase> 

                    <goals> 

                        <goal>single</goal> 

                    </goals> 

                </execution> 

            </executions> 

        </plugin> 

 

       </plugins>

 

 

使用了assembly插件,引入他的配置文件:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"

          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

    <id>bin</id>

    <!-- 最終打包成一個用於發布的zip文件 -->

    <formats>

        <format>zip</format>

    </formats>

 

    <!-- Adds dependencies to zip package under lib directory -->

    <dependencySets>

        <dependencySet>

            <!--

               不使用項目的artifact,第三方jar不要解壓,打包進zip文件的lib目錄

           -->

            <useProjectArtifact>false</useProjectArtifact>

            <outputDirectory>lib</outputDirectory>

            <unpack>false</unpack>

        </dependencySet>

    </dependencySets>

 

    <fileSets>

        <!-- 把項目相關的說明文件,打包進zip文件的根目錄 -->

        <fileSet>

            <directory>${project.basedir}</directory>

            <outputDirectory>/</outputDirectory>

            <includes>

                <include>README*</include>

                <include>LICENSE*</include>

                <include>NOTICE*</include>

            </includes>

        </fileSet>

       

        <!-- 把項目的配置文件,打包進zip文件的config目錄 -->

        <fileSet>

            <directory>${project.basedir}\src\main\resources</directory>

            <outputDirectory></outputDirectory>

            <includes>

                <include>*.xml</include>

                <include>*.properties</include>

            </includes>

        </fileSet>

       

        <!-- 把項目的腳本文件目錄( src/main/scripts )中的啟動腳本文件,打包進zip文件的跟目錄 -->

        <fileSet>

            <directory>${project.basedir}\src\main\bin</directory>

            <outputDirectory></outputDirectory>

            <includes>

                <include>startup.*</include>

            </includes>

        </fileSet>

 

        <!-- 把項目的腳本文件(除了啟動腳本文件),打包進zip文件的script目錄 -->

<!--      <fileSet>

            <directory>${project.build.scriptSourceDirectory}</directory>

            <outputDirectory></outputDirectory>

            <excludes>

                <exclude>startup.*</exclude>

           </excludes>

        </fileSet>  -->

       

        <!-- 把項目自己編譯出來的jar文件,打包進zip文件的根目錄 -->

        <fileSet>

            <directory>${project.build.directory}</directory>

            <outputDirectory></outputDirectory>

            <includes>

                <include>*.jar</include>

            </includes>

        </fileSet>

    </fileSets>

</assembly>

 

 

 

參考博客:

http://blog.csdn.net/WANGYAN9110/article/details/38646677/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM