如何在pom.xml中创建没有插件的可执行jar文件

问题描述

我正在尝试通过命令行为现有的maven项目创建可执行jar文件。我知道maven-jar-plugin可以通过将插件添加到pom.xml来做到这一点,但是我们不希望添加插件

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>app-export-promotion-client${app.version}/lib/</classpathPrefix>
                            <mainClass>com.app.setup_promotion.server.manager.PromotionExportManager</mainClass>
                        </manifest>
                    </archive>
                </configuration>
</plugin>

但是在这里,我们尝试不通过命令行或清单文件在pom.xml中添加插件而实现此目的。 我尝试在src文件添加带有MANIFEST.MF文件Meta_INF文件夹(由于src是我的sourceDirectory,请参见下面的pom.xml),但出现异常 no main manifest attribute

有没有办法做到这一点。

pom.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <properties>
        <app.version>16.1.2.0</app.version>
    </properties>

    <groupId>app</groupId>
    <artifactId>export-promotion-client</artifactId>
    <name>JavaClient Export Promotion Client</name>
    <version>16.1-2</version>

    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>com.app.maven</groupId>
                <artifactId>app-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>sedclasspath</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <prefix>../lib/</prefix>
                    <sourceFiles>
                        <sourceFile>bin/ExportPromotion.cmd.template</sourceFile>
                        <sourceFile>bin/ExportPromotionByRevision.cmd.template</sourceFile>
                    </sourceFiles>
                    <targetFiles>
                        <targetFile>target/bin/ExportPromotion.cmd</targetFile>
                        <targetFile>target/bin/ExportPromotionByRevision.cmd</targetFile>
                    </targetFiles>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <finalName>app-export-promotion-client${app.version}</finalName>
                    <descriptor>assembly.xml</descriptor>
                    <attach>true</attach>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        // All Dependency are added here.
    </dependencies>

</project>

我正在使用mvn install创建jar文件。然后我将这个jar文件复制到docker容器中以运行它。我遇到异常 no main manifest attribute

Dockerfile入口点:ENTRYPOINT ["java","-jar","export-promotion-client.jar"]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)