簡體   English   中英

具有依賴性的可執行jar使用maven而不解壓縮jar但包含classpath

[英]Executable jar with dependency using maven without unpacking jars but include classpath

我可能需要這樣的問題

Maven構建具有依賴關系的程序集

maven程序集創建具有依賴項和類路徑的jar

我如何執行可執行jar?

java -jar at commandline在線程“main”中給出了異常java.lang.NoClassDefFoundError:org / apache / log4j / Logger

我在我的目標目錄和lib目錄中創建了executable.jar,所有依賴jar都在/ lib directoty下。

這是我的pom.xml的片段。我應該改變什么?

</dependencies> 
 <dependency>
<groupId><gId></groupId>
<artifactId><aId></artifactId>
<version><v></version>
</dependency>
<dependency>
<groupId>gI2</groupId>
<artifactId>aI2</artifactId>
<version>v</version>
</dependency>
</dependencies>
<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>com.proj.app</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

使用Maven Shade插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>1.6</version>
    <configuration>
        <createDependencyReducedPom>true</createDependencyReducedPom>
        <filters>
            <filter>
                <artifact>*:*</artifact>
                <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                </excludes>
            </filter>
        </filters>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass><Your main class here></mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

這將包括一個jar中的所有依賴項,並自動將主類添加到您的Manifest文件中。

確保運行“包”目標。

您的發行版需要包含您在應用程序中使用的庫的所有JAR文件。 程序集插件專為滿足此要求而設計。

我通常使用程序集插件來創建包含整個發行版的ZIP文件。 這是我自己的應用程序的JAR文件,所有必要的配置文件,當然 - 所有庫JAR。

此外,您的可執行JAR文件需要適當的清單文件。 也就是說,它需要一個正確的主要classe條目和一個類路徑。

您可以使用App Assembler插件執行此操作。 它會將依賴項復制到文件夾並創建快捷方式來執行主類。

暫無
暫無

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

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