Java maven汇编插件Windows vs Linux
我有一个使用maven assembly插件的项目,我看到在Linux和Windows上构建时的行为有所不同。在每个平台上使用完全相同的pom.xml和assembly.xml 窗口: mvn日志记录如下所示:Java maven汇编插件Windows vs Linux,java,maven,maven-assembly-plugin,Java,Maven,Maven Assembly Plugin,我有一个使用maven assembly插件的项目,我看到在Linux和Windows上构建时的行为有所不同。在每个平台上使用完全相同的pom.xml和assembly.xml 窗口: mvn日志记录如下所示: [INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo --- [INFO] Building jar: C:\foo\target\foo.jar [INFO] [INFO] --- maven-assembly-plugin
[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo ---
[INFO] Building jar: C:\foo\target\foo.jar
[INFO]
[INFO] --- maven-assembly-plugin:3.1.0:single (default) @ foo ---
[INFO] Reading assembly descriptor: assembly.xml
[INFO] Copying files to C:\foo\target\foo
[WARNING] Assembly file: C:\foo\target\foo is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo ---
[INFO] Building jar: /home/<user>/foo/target/foo.jar
[INFO]
[INFO] --- maven-assembly-plugin:3.1.0:single (default) @ foo ---
[INFO] Reading assembly descriptor: assembly.xml
[INFO] Copying files to /home/<user>/foo/target/foo-1.0.0001
[WARNING] Assembly file: /home/<user>/foo/target/foo-1.0.0001 is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
在目标目录中,我观察到一个目录C:\foo\target\foo,其中包含项目的所有依赖JAR
Linux:
mvn日志记录如下所示:
[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo ---
[INFO] Building jar: C:\foo\target\foo.jar
[INFO]
[INFO] --- maven-assembly-plugin:3.1.0:single (default) @ foo ---
[INFO] Reading assembly descriptor: assembly.xml
[INFO] Copying files to C:\foo\target\foo
[WARNING] Assembly file: C:\foo\target\foo is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[INFO] --- maven-jar-plugin:3.1.0:jar (default-jar) @ foo ---
[INFO] Building jar: /home/<user>/foo/target/foo.jar
[INFO]
[INFO] --- maven-assembly-plugin:3.1.0:single (default) @ foo ---
[INFO] Reading assembly descriptor: assembly.xml
[INFO] Copying files to /home/<user>/foo/target/foo-1.0.0001
[WARNING] Assembly file: /home/<user>/foo/target/foo-1.0.0001 is not a regular file (it may be a directory). It cannot be attached to the project build for installation or deployment.
[INFO]——maven jar插件:3.1.0:jar(默认jar)@foo---
[INFO]构建jar:/home//foo/target/foo.jar
[信息]
[信息]---maven汇编插件:3.1.0:single(默认)@foo---
[信息]正在读取程序集描述符:assembly.xml
[信息]将文件复制到/home//foo/target/foo-1.0.0001
[警告]程序集文件:/home//foo/target/foo-1.0.0001不是常规文件(可能是目录)。无法将其附加到项目生成以进行安装或部署。
但是在目标目录中没有目录target/foo(也没有目录target/foo-1.0.001)
我应该注意到一个下游项目期望target/foo目录存在,这就是为什么我要研究Windows和Linux之间的行为差异
这是我的pom中的插件定义:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<descriptor>assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
maven汇编插件
包裹
单一的
假的
assembly.xml
这是程序集描述符:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/3.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/3.1.0 http://maven.apache.org/xsd/assembly-3.1.0.xsd">
<id>tar</id>
<formats>
<format>dir</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<files>
<file>
<source>${project.build.directory}/${project.artifactId}.jar</source>
<outputDirectory>./</outputDirectory>
</file>
</files>
<dependencySets>
<dependencySet>
<unpack>false</unpack>
<excludes>
<exclude>${artifact}</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
焦油
迪尔
假的
${project.build.directory}/${project.artifactId}.jar
./
假的
${artifact}
我尝试过在\
和\
部分修补finalName,但都没有用,我还尝试过该插件的最新版本
为什么在Windows上构建时会给我目标\foo目录和中的依赖项,而在Linux上构建后,我看不到等效目录?您是否尝试过像这样指定确切的outputDirectory
目标/assembly/out
我在我的项目中使用它,效果很好,从未体验过您所说的内容