java - 即使定义了 mainClass,使用 JIB 构建也会找到多个有效的主类
问题描述
使用 jib 命令 mvn clean compile jib:build 构建我的服务项目时,出现以下错误:
无法在项目 my-service 上执行目标 com.google.cloud.tools:jib-maven-plugin:1.0.2:build (build-image-and-tag-image):找到多个有效的主类:com.myservice .MyServiceApplication, io.swagger.Swagger2SpringBoot, 也许你应该
mainClass
在 jib-maven-plugin 中添加一个配置 -> [帮助 1]
但是我已经为 spring-boot 设置了主要类
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.myservice.MyServiceApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
它仍然不起作用。
我试图将它添加到 jib 配置中:
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<configuration>
<container>
<mainClass>com.myservice.MyServiceApplication</mainClass>
</container>
</configuration>
<executions>
<execution>
<id>build-image-and-tag-image</id>
<phase>package</phase>
<goals>
<goal>dockerBuild</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
它仍然不起作用。强制 jib 忽略其他类并使用 com.myservice.MyServiceApplication 的任何其他方式。
注意: mvn clean install 工作正常,我使用它没有问题,它有一个独立的 spring boot 应用程序。
解决方案
主类需要在pom.xml文件的<build>中定义的<plugins>中设置。
解决问题看起来像这样:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.myservice.MyServiceApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<configuration>
<container>
<mainClass>com.myservice.MyServiceApplication</mainClass>
<ports>
<port>8080</port>
</ports>
<environment>
<application.title>${project.name}</application.title>
<application.version>${project.version}</application.version>
</environment>
<jvmFlags>
<jvmFlag>-javaagent:/usr/local/newrelic/newrelic.jar</jvmFlag>
</jvmFlags>
</container>
</configuration>
</plugin>
.... (more plugin)
</plugins>
</build>
推荐阅读
- c++ - 为什么整数类型 int64_t 不能保持这个合法值?
- sql - 在 SQL 中将两条记录分组为一条记录
- java - 如何覆盖在另一个已继承的类中赋予值的变量
- excel - 如何在excel中的每一行中重复命令按钮
- react-native - 在Android@react-native 0.60.2 上运行项目,构建成功但没有任何反应
- python - 使用 python 写入一个单元格中包含多行的 csv 文件
- ruby - 错误:启动 jekyll 服务器时未初始化的常量 FFI::Platform::CPU
- r - 什么是简单混合模型代码 (R) 中的“+0”?
- html - 如何防止一个标签破坏另一个标签的居中
- javascript - Tinymce 能否给我一些保留所有样式的准确 HTML 内容(真的是所见即所得)?