溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar問題怎么解決

發(fā)布時(shí)間:2022-08-18 09:36:12 來源:億速云 閱讀:255 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar問題怎么解決”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar問題怎么解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

    Maven打包時(shí)包含資源文件和源碼到j(luò)ar

    在使用Maven打包時(shí),我們發(fā)現(xiàn)最終打包之后jar中只有已經(jīng)編譯完成的代碼class,資源文件都沒了,如果有資源文件需要打包進(jìn)jar的話,直接打包jar無法正常工作。

    其實(shí),在pom.xml中配置一下<build>節(jié)點(diǎn)即可實(shí)現(xiàn)把資源打包進(jìn)來的操作。

    在<build>中添加以下內(nèi)容

    <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
            <filtering>false</filtering>
        </resource>
     
        <resource>
            <directory>${basedir}/src/main/java</directory>
            <includes>
                <include>**/*.*</include>
            </includes>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
            <filtering>false</filtering>
        </resource>
    </resources>

    可以看到,添加的<resources>節(jié)點(diǎn)中有兩個(gè)<resource>子節(jié)點(diǎn),分別配置了兩個(gè)不同的地方的內(nèi)容打包進(jìn)jar(一般資源文件放在項(xiàng)目resource文件夾和源代碼文件夾里面),其中每一個(gè)<resource>節(jié)點(diǎn)中的內(nèi)容

    意義如下

    • <directory>為被打包的資源文件的路徑,${basedir}表示這個(gè)項(xiàng)目的根目錄。

    • <includes>被包含的文件,里面的<include>**/*.*</include>表示包含其中的所有文件和文件夾。

    • <filtering>是否過濾資源文件,默認(rèn)false。

    • <excludes>要排除的文件,上面的配置內(nèi)容中排除了所有的java源代碼文件防止把源代碼也打包進(jìn)去了。

    如果在別的地方有資源文件,可以自己再添加<resource>節(jié)點(diǎn),格式按照這個(gè)來。

    需要說明的是一些jar外部包因?yàn)榘琷ava doc注釋,所以也需要將源代碼文件包含進(jìn)去。

    這樣的話也很簡(jiǎn)單,把上面的第二個(gè)<resource>節(jié)點(diǎn)中的整個(gè)<excludes>節(jié)點(diǎn)去掉即可。(即不配置排除java源代碼文件)

    maven打包時(shí)包含源碼的問題

    由于jar包和項(xiàng)目分開打包,并且jar包打包后不會(huì)帶注釋,會(huì)對(duì)代碼調(diào)試增加難度,所以增加了jar包攜帶源碼的方式,解決方式如下

    1.maven-source-plugin提供項(xiàng)目自動(dòng)將源碼打包并發(fā)布的功能

    在需要發(fā)布源碼項(xiàng)目的pom.xml文件中添加如下代碼即可:

    <!-- Source attach plugin -->
     <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-source-plugin</artifactId>
                  <executions>
                      <execution>
                          <id>attach-sources</id>
                          <goals>
                              <goal>jar</goal>
                          </goals>
                      </execution>
                  </executions>
              </plugin>
          </plugins>
      </build>

    2.刪除target文件夾

    3.mvan執(zhí)行

    • 執(zhí)行 mvn install,maven會(huì)自動(dòng)將source install到repository 。

    • 執(zhí)行 mvn deploy,maven會(huì)自動(dòng)將source deploy到remote-repository 。

    • 執(zhí)行 mvn source:jar,單獨(dú)打包源碼。

    讀到這里,這篇“使用Maven打包時(shí)包含資源文件和源碼到j(luò)ar問題怎么解決”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI