maven項目打包

現欲將項目源碼打成可執行jar包,但不將(resources)資源文件打入jar包,而是在jar包中指定classpath,那麼如何編寫POM文件呢?

項目的結構是:

-src

-----main

--------+java

--------+sources

--------+webapp

----+test

現需要打成一個可執行的jar包,運行時的結構如下:

-work

----+lib

----+resources

-----runnable.jar

-----run.sh

並且run.sh中,啓動命令類型於:java -jar runnable.jar 

runnable.jar的MANIFEST.MF文件裏的內容,類似如下圖,注意哦,不僅有依賴的jar包還有resources


本博文參考自:http://www.jianshu.com/p/afb79650b606

下面直接貼出POM腳本

<build>
        <finalName>dataMigration</finalName>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
            <resource>
                <directory>${profiles.dir}/${deploy.type}</directory>
                <targetPath>META-INF</targetPath>
            </resource>
        </resources>

        <plugins>
            <!-- 項目依賴插件  -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <configuration>
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    <excludeTransitive>false</excludeTransitive> <!-- 表示是否不包含間接依賴的包 -->
                    <stripVersion>false</stripVersion> <!-- 去除版本信息 -->
                </configuration>

                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 拷貝項目依賴包到lib/目錄下 -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 項目資源插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <encoding>UTF-8</encoding>
                            <!-- 拷貝項目src/main/resources/下,除.bat以外的所有文件到conf/目錄下 -->
                            <outputDirectory>${project.build.directory}/resources</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources/</directory>
                                    <filtering>true</filtering>
                                    <excludes>
                                        <exclude>*.bat</exclude>
                                    </excludes>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                    <execution>
                        <id>copy-command</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <encoding>UTF-8</encoding>
                            <!-- 拷貝項目src/main/resources/目錄下所有文件到輸出目錄下 -->
                            <outputDirectory>${project.build.directory}</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources/</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 打包插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <!-- 生成MANIFEST.MF的設置 -->
                        <manifest>
                            <!-- 爲依賴包添加路徑, 這些路徑會寫在MANIFEST文件的Class-Path下 -->
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <!-- jar啓動入口類-->
                            <mainClass>MigrateLauncher</mainClass>
                        </manifest>
                        <manifestEntries>
                            <!-- 在Class-Path下添加配置文件的路徑 -->
                            <Class-Path>resources/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <includes>
                        <!-- 打jar包時,只打包class文件 -->
                        <include>**/*.class</include>
                    </includes>
                </configuration>
            </plugin>
            <!-- Compiler plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${jdk.version}</source>
                    <target>${jdk.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
                <version>3.5.1</version>
            </plugin>
        </plugins>
    </build>



發佈了42 篇原創文章 · 獲贊 19 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章