当使用三角臂命令mvn clean编译jib:build构建我的服务项目时,会出现以下错误:


无法执行目标
com.google.cloud.tools:jib-maven-plugin:1.0.2:build
项目my-service上的(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>


它仍然不起作用。

我试图将其添加到臂架配置中:

        <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>


它仍然不起作用。
强制臂架忽略其他类并使用com.myservice.MyServiceApplication的任何其他方法。

注意:mvn clean install工作正常,使用独立的spring boot应用程序时我没有问题。

最佳答案

需要在pom.xml文件的的定义中设置主类。

看起来像这样可以解决问题:

    <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>

关于java - 使用JIB进行构建,即使定义了mainClass,也发现了多个有效的主类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55837213/

10-10 19:46