java - 我需要在我的 pom.xml 中添加什么来运行这个特定的 Java 文件?
问题描述
我不是 Java 开发人员,不熟悉 Java 程序的打包和构建。我正在尝试运行此文件: https ://github.com/CodinGame/SpringChallenge2020/blob/master/src/test/java/Spring2020Main.java
通过做
mvn clean install
java -jar .\target\spring-2020-1.0-SNAPSHOT.jar
但我收到此错误:
no main manifest attribute, in .\target\spring-2020-1.0-SNAPSHOT.jar
我一生无法弄清楚我需要添加到 pom.xml 中的内容,或者我需要做的任何其他事情才能使其正常工作。
任何帮助将不胜感激。
解决方案
您可以按照以下步骤操作:
- 移动
Spring2020Main.java
到src/main/java/com/codingame
目录 - 在 pom.xml 之后添加以下内容
</dependencies>
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.codingame.Spring2020Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
- 使用运行 Maven 构建
mvn clean install
- 使用执行程序
java -jar target/spring-2020-1.0-SNAPSHOT.jar
信息: Apache Maven Shade 插件有助于构建所谓的 uber-jar 或 fat-jar。这意味着所有依赖项都打包为生成的 jar 文件的一部分,而无需在classpath
执行 jar 文件时添加任何“库”。作为最终 jar 的一部分,我们需要指定需要将哪个文件视为要执行的主文件。这通常使用META-INF/MANIFEST.MF
uber-jar 中的文件来完成。这就是插件transformer
内部指定的configuration
为我们所做的。
推荐阅读
- ios - 在 iOS 中,当应用程序处于后台或终止状态时,不会向用户显示 CallKit
- maven - 清理和安装项目时maven依赖检查失败
- javascript - 如何对具有许多依赖项的不纯函数进行单元测试?
- ios - "预期解码字典
但找到了一个数组。”,基础错误:无 - algorithm - 为什么具有 2 个队列和排序输入的霍夫曼代码算法是 O(n)
- php - php zip提取使文件为空
- tcl - 请解释一下Tcl中的proc命令
- sql - SQL Server 中的动态多轴
- wordpress - 如何将自定义语言添加到 wpml_browser_redirect_params
- python - 将动态 XML 文件转换为 CSV 文件 - Python