0

使用 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 应用程序。

4

1 回答 1

0

主类需要在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>
于 2019-04-24T19:39:30.530 回答