Maven程序集:包括baseDirectory父级别的文件

时间:2018-01-12 18:05:02

标签: java maven

我正在使用maven程序集进行多模块项目,看起来像这样

    PARENT\pom.xml 
      --warModule
         -- pom.xml
         --/target/module-1.war
      --configModule
        --pom.xml
        --target/**module-2.jar**
      --distrib
        --pom.xml
        --src/assembly/assembly.xml

在我的分发模块中,我想打包并创建一个jar文件,该文件应仅包含 module-1.war module-2.jar 文件。

我的distrib / pom.xml看起来像这样

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>com.wellsfargo.gateway.fx</groupId>
    <artifactId>distrib</artifactId>
    <version>1.0-SNAPSHOT</version>
</parent>

<artifactId>distrib</artifactId>

<properties>
    <izpack.version>5.1.2</izpack.version>
    <izpack.base.dir>${project.build.directory}\${project.artifactId}-${project.version}-fx\izpack</izpack.base.dir>
    <izpack.standalone.compiler.version>4.3.2</izpack.standalone.compiler.version>
</properties>

<build>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
            <descriptors>
                <descriptor>distrib/src/assembly/assembly.xml
                </descriptor>
            </descriptors>

        </configuration>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

</plugins>

我的assembly.xml看起来像这样     http://maven.apache.org/xsd/assembly-2.0.0.xsd">     的IzPack     $ {} main.basedir              DIR          假

<fileSets>
    <fileSet>
        <directory>${project.build.directory}</directory>
        <outputDirectory>propdeploy</outputDirectory>
    </fileSet>
</fileSets>
<files>

    <file>
        <source>../warModule/target/module-1.war</source>
        <destName>foreign-exchange-v2.war</destName>
        <outputDirectory>wardeploy</outputDirectory>
    </file>
    <file>
        <source>../configModule/target/module-2.jar</source>
        <destName>module-2.jar</destName>
        <outputDirectory>wardeploy</outputDirectory>
    </file>

</files>

<dependencySets>
    <dependencySet>
        <unpack>true</unpack>
        <useProjectArtifact>true</useProjectArtifact>
    </dependencySet>
</dependencySets>

问题是当前没有识别分发的父目录,并且在位置xxxx / distrib / warModule / target / module-v1.war中抱怨 noSuchFileFound ,并且对于module-v2抱怨相同。战争。如何获取父文件夹子路径中的文件?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

<强>解释

主要问题是父POM和子POM都具有相同的artifactID。 目前,两个artifactID都是:<artifactId>distrib</artifactId>

由于含糊不清,Maven假定../将您带到父POM的父文件夹,在这种情况下,其中没有/warModule文件夹。

<强>解决方案:

  1. 确保每个artifactID都是唯一的。
  2. (建议)按照Maven指导命名groupIDs,artifactIDs:Response Assertions in JMeter 3.2 - New and Improved