Spring boot mac:找不到jar

时间:2018-03-21 03:24:08

标签: java spring maven docker spring-boot

我目前正在尝试以旧时尚的方式将spring boot应用程序容器化。我想使用maven命令构建我的项目,将jar(及其依赖项)复制到容器并使用嵌入式Tomcat运行Jar。

到目前为止,我编写了一个maven配置文件来编译我的代码并构建一个jar。在罐子里面躺着所有的依赖罐子。完善!

当我尝试通过cli手动运行jar时,会发生不幸的事情。 CLI抱怨缺少一个依赖jar,但在解压缩并通过父jar本身之后,情况似乎并非如此。

请允许我进一步分解:

这是我的maven个人资料:

<profile>
            <id>docker</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <packaging.type>jar</packaging.type>
                <log.dir>logs</log.dir>
                <!-- updates bootstrap.properties -->
                <config.override.path>./conf</config.override.path> <!-- "file:" cannot be used with relative path (not a valid URI, y'all) -->
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>fully.qualified.MainClass</mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

这是我用来运行构建的Jar的命令:

java -jar target/the-jar-1.0.0-SNAPSHOT.jar

最后,这是错误:

java.io.FileNotFoundException: target/the-jar-1.0.0-SNAPSHOT.jar!/BOOT-INF/lib/the-missing-jar-1.0.0-SNAPSHOT.jar (No such file or directory)

我解压缩了“the-jar”只是为了在正确的位置找到“the-missing-jar”。不仅如此,当我在IDE(IntelliJ)中启动时,父Jar工作正常。

我在这里缺少一些东西吗?我应该采用不同的方法吗?我觉得我现在太靠近了。

更新: 在一些人的推荐下,我改变了我的构建配置文件。虽然我同意这是一种更好的方法,但它没有改变结果。我仍然得到同样的,关于在尝试执行超级罐时未找到的jar的具体错误。

<profile>
    <id>docker</id>
    <activation>
        <activeByDefault>false</activeByDefault>
    </activation>
    <properties>
        <packaging.type>jar</packaging.type>
        <log.dir>logs</log.dir>
        <!-- updates bootstrap.properties -->
        <config.override.path>./conf</config.override.path> <!-- "file:" cannot be used with relative path (not a valid URI, y'all) -->
    </properties>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</profile>

1 个答案:

答案 0 :(得分:0)

没有必要手动包装弹簧靴应用。

您可以让spring-boot-maven-plugin为您正确构建它。

您需要添加

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

到您的maven项目,您将能够通过执行以下方式正确包装“uber-jar”:

mvn package

这是构建可执行jar的spring-boot推荐方法。

您可以找到更多详细信息,包括可运行的示例in the documentation