Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用SpringBootMaven插件创建的嵌套可执行jar中启动主类_Maven_Spring Boot_Spring Boot Maven Plugin - Fatal编程技术网

在使用SpringBootMaven插件创建的嵌套可执行jar中启动主类

在使用SpringBootMaven插件创建的嵌套可执行jar中启动主类,maven,spring-boot,spring-boot-maven-plugin,Maven,Spring Boot,Spring Boot Maven Plugin,我有一个简单的Spring Boot类,如下所示: @SpringBootApplication public class Starter { public static void main(String... args) { if ("foo".equals(args[0])) { SpringApplication.run(Foo.class, args); } else if ("bar".equals(args[0]

我有一个简单的Spring Boot类,如下所示:

@SpringBootApplication
public class Starter {
        public static void main(String... args) {
        if ("foo".equals(args[0])) {
            SpringApplication.run(Foo.class, args);
        } else if ("bar".equals(args[0])) {
            SpringApplication.run(Bar.class, args);
        }
     }
}
Foo.java和Bar.java文件是作为依赖项嵌套在当前jar文件中的主要类文件,并用@SpringBootApplication注释。jar文件结构如下所示

├───BOOT-INF │ ├───classes │ │ ├───com │ │ │ └───app │ │ │ └───starter │ │ │ └───Starter.class | | | │ │ └───config │ └───lib | ├───tool1.jar | | └───Foo.java | └───tool2.jar | └───Bar.java ├───META-INF │ └───maven │ └───com.app.starter │ └───starter └───org └───springframework └───boot └───loader ├───archive ├───data ├───jar └───util 以下是Starter POM文件的摘录:

<project>
.....
    <parent>
        <groupId>com.app.myproject</groupId>
        <artifactId>parent-tool</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>starter</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.app.myproject</groupId>
            <artifactId>foo-project</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>com.app.myproject</groupId>
            <artifactId>bar-project</artifactId>
            <version>1.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

有人能提出实现这一目标的方法吗?非常感谢您的任何想法。

经过长时间的研究,在团队领导的帮助下,我终于找到了解决方案。这实际上是由SpringBootMaven插件创建的可执行jar依赖性问题。我的初学者类无法在依赖项列表中找到Foo.java或Bar.java,因为这些JAR也是可执行JAR。最后,我在我的foo项目和bar项目POM文件中添加了以下行:

<project>
.....
    <parent>
        <groupId>com.app.myproject</groupId>
        <artifactId>parent-tool</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>starter</artifactId>
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.app.myproject</groupId>
            <artifactId>foo-project</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>com.app.myproject</groupId>
            <artifactId>bar-project</artifactId>
            <version>1.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>none</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

org.springframework.boot
springbootmaven插件
没有一个
这使得foo项目和bar项目与一般项目不一样,一切都按预期进行

希望这对使用SpringBootMaven插件的人有所帮助