Java 为什么docker maven插件无法选择正确的jar文件以包含在docker映像中?
就我所了解的构建流程而言:Java 为什么docker maven插件无法选择正确的jar文件以包含在docker映像中?,java,maven,docker,maven-docker-plugin,Java,Maven,Docker,Maven Docker Plugin,就我所了解的构建流程而言: maven汇编插件builds/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar maven-jar-plugin构建/target/my-artifact-1.0-SNAPSHOT.jar(不确定我们为什么需要它) docker maven插件假设artifact with dependencies/target/my-artifact-1.0-SNAPSHOT-jar-with-dependenci
maven汇编插件
builds/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar
maven-jar-plugin
构建/target/my-artifact-1.0-SNAPSHOT.jar
(不确定我们为什么需要它)docker maven插件
假设artifact with dependencies
/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.20.1</version>
<extensions>true</extensions>
<configuration>
<images>
<image>
<name>my-artifact</name>
<build>
<from>java:8-jre</from>
<volumes>
<volume>/target</volume>
</volumes>
<entryPoint>
<exec>
<arg>java</arg>
<arg>-jar</arg>
<arg>/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar</arg>
</exec>
</entryPoint>
<assembly>
<descriptorRef>artifact-with-dependencies</descriptorRef>
<targetDir>/target</targetDir>
<mode>dir</mode>
<!--<basedir>/target</basedir>-->
</assembly>
</build>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker-build</id>
<goals>
<goal>build</goal>
</goals>
</execution>
<execution>
<id>docker:start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>docker:stop</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>create-archive</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>Client</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>Client</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
io.fabric8
docker maven插件
0.20.1
真的
我的神器
java:8-jre
/目标
JAVA
-罐子
/target/my-artifact-1.0-SNAPSHOT-jar-with-dependencies.jar
具有依赖项的工件
/目标
迪尔
码头工人建造
建造
码头工人:开始
预集成测试
开始
码头工人:停下
整合后测试
停止
maven汇编插件
创建存档
包裹
单一的
客户
带有依赖项的jar
org.apache.maven.plugins
maven jar插件
3.1.1
真的
解放党/
客户
引用文档:
具有依赖项的工件
将使用名称添加创建的工件
${project.build.finalName}.${artifact.extension}和所有jar
targetDir中的依赖项(默认情况下为/maven)
这不是你想要的
我认为您想要的是将程序集自定义为以下内容:
<assembly>
<targetDir>/target</targetDir>
<inline>
<fileSets>
<fileSet>
<directory>${project.basedir}/target/</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>project-name-version-classifier-jar-with-dependencies.jar</include>
</includes>
</fileSet>
</fileSets>
</inline>
</assembly>
,如果您正在为Java项目构建映像,它可能更适合您的需要
<assembly>
<targetDir>/target</targetDir>
<inline>
<fileSets>
<fileSet>
<directory>${project.basedir}/target/</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>project-name-version-classifier-jar-with-dependencies.jar</include>
</includes>
</fileSet>
</fileSets>
</inline>
</assembly>