簡體   English   中英

maven-shade-plugin output with shadedArtifactAttached false 被安裝覆蓋

[英]maven-shade-plugin output with shadedArtifactAttached false overwritten by install

我在部署由 maven-shade-plugin 創建的 jar 文件時遇到問題。 它曾經工作,但它已經停止工作。 根據我的研究,問題似乎是安裝步驟覆蓋了陰影 jar。

如果我使用以下設置:

<shadedArtifactAttached>true</shadedArtifactAttached>

它將為我創建一個胖 jar,但如果我將其更改為

<shadedArtifactAttached>false</shadedArtifactAttached>

安裝/部署將刪除主要 class 的依賴項和清單條目。

我不想使用“true”設置,因為文件重命名會破壞我所有依賴於通用腳本的工具,該通用腳本將通過 cURL 部署工件。

所以,當我跑步時

$ mvn -s ../.m2/settings.xml --batch-mode --errors --fail-at-end --show-version clean package shade:shade

我得到了正確的文件: ontology-merger-0.3.31.jar (大文件)和original-ontology-merger-0.3.31 (小文件)

當我跑步時

$ mvn -s ../.m2/settings.xml --batch-mode --errors --fail-at-end --show-version clean package shade:shade install

安裝步驟將破壞陰影 jar。 我假設發生這種情況是因為它在其上運行maven-jar-plugin ,盡管我在pom.xml中的任何地方都沒有提到maven-jar-plugin 我不知道如何關閉它。

日志中的重要部分:

[INFO] Replacing original artifact with shaded artifact.
[INFO] Replacing C:\dev\allotrope\source\ontology-qa-tools\merger\target\ontology-merger-0.3.31.jar with C:\dev\allotrope\source\ontology-qa-tools\merger\target\ontology-merger-0.3.31-shaded.jar
[INFO] Dependency-reduced POM written at: C:\dev\allotrope\source\ontology-qa-tools\merger\dependency-reduced-pom.xml
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ontology-merger --- [INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ ontology-merger --- [INFO] Nothing to compile - all classes are up to date [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ontology-merger --- [INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 30 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ ontology-merger --- [INFO] No sources to compile [INFO] [INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ontology-merger --- [INFO] Skipping execution of surefire because it has already been run for this configuration [INFO] [INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ ontology-merger --- [INFO] Building jar: C:\dev\allotrope\source\ontology-qa-tools\merger\target\ontology-merger-0.3.31.jar
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ ontology-merger --- [INFO] Installing C:\dev\allotrope\source\ontology-qa-tools\merger\target\ontology-merger-0.3.31.jar to C:\Users\User\.m2\repository\com\osthus\ontology-merger\0.3.31\ontology-merger-0.3.31.jar
[INFO] Installing C:\dev\allotrope\source\ontology-qa-tools\merger\dependency-reduced-pom.xml to C:\Users\User\.m2\repository\com\osthus\ontology-merger\0.3.31\ontology-merger-0.3.31.pom

我的pom.xml中的部分目前如下所示:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.3</version>
                <configuration>
                    <shadedArtifactAttached>true</shadedArtifactAttached>
                    <transformers>
                        <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                            <mainClass>com.osthus.ontology_merger.MergerMain</mainClass>
                            <manifestEntries>
                                <Main-Class>com.osthus.ontology_merger.MergerMain</Main-Class>
                            </manifestEntries>
                        </transformer>
                        <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                        <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
                        <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
                            <addHeader>false</addHeader>
                        </transformer>
                    </transformers>
                    <filters>
                        <filter>
                            <artifact>*:*</artifact>
                            <excludes>
                                <!-- Some jars are signed but shading breaks that. Don't include 
                                    signing files. -->
                                <exclude>META-INF/*.SF</exclude>
                                <exclude>META-INF/*.DSA</exclude>
                                <exclude>META-INF/*.RSA</exclude>
                            </excludes>
                        </filter>
                    </filters>
                </configuration>

我的各種修復嘗試都在這個分支中:

https://gitlab.com/allotrope-open-source/ontology-qa-tools/-/tree/deployment-test

pom.xml 的路徑:

https://gitlab.com/allotrope-open-source/ontology-qa-tools/-/blob/deployment-test/merger/pom.xml

一點歷史:

我的部署已經運行了多年而沒有出現問題,最近我已經崩潰了,我上個月通過

https://gitlab.com/allotrope-open-source/ontology-qa-tools/-/commit/7080d16179c2ccf7ab47208716b1bf1b3a05be29

https://gitlab.com/allotrope-open-source/ontology-qa-tools/-/commit/0d231d691ffd48347e34f9da9373d092939e69e2

我必須在pom.xml文件中添加一些樣板並更改

$ mvn -s ../.m2/settings.xml --batch-mode --errors --fail-at-end --show-version clean deploy

$ mvn -s ../.m2/settings.xml --batch-mode --errors --fail-at-end --show-version clean package shade:shade deploy

謝謝你的時間

我找到了解決方案。 將此添加到pom-xml

<plugin>
    <groupId>maven</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <executions>
        <execution>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>

這會將maven-jar-plugin的執行從install階段轉移到package階段,因此它將不再破壞maven-shade-plugin的 output 。 然后可以通過調用來完成部署:

mvn clean package shade:shade deploy

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM