我目前正在尝试以旧时尚的方式将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>
答案 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。