如何在没有(没有主要清单属性)的情况下为现有的 Maven 项目生成 jar 文件?

How to produce a jar file for existing maven project without (no main manifest attribute)?

我是 Maven 新手。我对此一无所知。 我下载了一个开源的 maven 项目表格 Github。 我在 Eclipse 中打开它。我只修改了一行来修改此格式的日期模式:

final String pattern = "%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n";

对此

final String pattern = "%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p - %m%n";

然后,我尝试生成项目的jar 文件。 下载项目附带的 pom.xml 正在使用 package shade 插件。

<plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <version>${shade.version}</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>shade</goal>
                                </goals>
                                <configuration>
                                    <finalName>name-of-pro-${project.version}</finalName>
                                    <transformers>
                                        <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                            <mainClass>name.of.the.package.and.Mainclass</mainClass>
                                        </transformer>
                                        <transformer
                                            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                                    </transformers>
                                    <filters>
                                        <!-- This is necessary to avoid a java.lang.SecurityException -->
                                        <filter>
                                            <artifact>*:*</artifact>
                                            <excludes>
                                                <exclude>META-INF/*.SF</exclude>
                                                <exclude>META-INF/*.DSA</exclude>
                                                <exclude>META-INF/*.RSA</exclude>
                                            </excludes>
                                        </filter>
                                    </filters>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>

因此,我尝试使用以下命令从 maven 获取 jar 文件:

mvn clean package

但是,当我 运行 使用此命令生成的 jar 文件时:

java -jar app-0.2.0-SNAPSHOT.jar

我收到(无主要清单属性)错误。

no main manifest attribute, in app-0.2.0-SNAPSHOT.jar

我搜索了 MANIFEST.MF 文件以检查那里的属性,但我找不到它。

Cloud 如果我遗漏了某些设置,谁能帮助我?

你不能只运行一个罐子。

要么您需要在命令行中指定完整的类路径,要么您需要将 jar 构建为 jar-with-dependencies,例如此处描述: