Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
maven jar插件排除失败_Maven_Maven Jar Plugin - Fatal编程技术网

maven jar插件排除失败

maven jar插件排除失败,maven,maven-jar-plugin,Maven,Maven Jar Plugin,我们正试图从同一个pom文件中构建两个JAR(是的,我读到有人说不要),因为出于内部政治原因,我们需要一个拥有所有资源的JAR,一个没有。我们已经为maven jar插件配置了一个我们认为应该可以工作的配置,但是资源总是包括在内的。以下是我们pom文件的相关部分: maven jar插件 包装消费者 包裹 消费者 src/main/resources 真的 **/*.bmp **/*jpg先生 **/*.jpeg **/*.gif **/*.xml **/*.sql **/*.log4j **

我们正试图从同一个pom文件中构建两个JAR(是的,我读到有人说不要),因为出于内部政治原因,我们需要一个拥有所有资源的JAR,一个没有。我们已经为maven jar插件配置了一个我们认为应该可以工作的配置,但是资源总是包括在内的。以下是我们pom文件的相关部分:


maven jar插件
包装消费者
包裹
消费者
src/main/resources
真的
**/*.bmp
**/*jpg先生
**/*.jpeg
**/*.gif
**/*.xml
**/*.sql
**/*.log4j
**/*.物业
**/*sh先生
罐子
当我们构建时,正如人们所期望的,我们得到了OurProject.Jar和OurProject-consumer.Jar,但是每个Jar文件中都有相同的资源

我们尝试了
***
***/resources/*.
而不是列表或特定扩展。没有快乐。我希望我们缺少一些基本的东西。

我建议您将其用于您的消费者jar,但既然您决定使用maven jar插件,那么让我们修复您的构建

这里的问题是,您将阻止资源从jar中删除的设置与实际从jar中排除资源的设置混淆了(两者都使用
标记)

以下配置(在
内部)在打包阶段触发对
jar:jar
的第二次调用。它将从使用者jar中排除所需的资源(有效地做您想做的事情):


有了这两种配置,您将实际构建两个jar。默认设置包含所有资源(包括筛选的xml和属性文件)和没有资源的辅助使用者jar。

我建议如下所示:

 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>second-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>without</classifier>
              <excludes>
                <exclude>**/*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

org.apache.maven.plugins
maven jar插件
第二罐
罐子
没有
**/*

当然要替换排除部分(否则您将创建一个空罐子)。感谢您的快速回答@khmarbaise!考虑到Anthony的编辑,这个解决方案奏效了。谢谢@Anthony Acioly。只需将标签移出即可解决问题。我不理解你的标签块的需要,因为我们的jar没有标签看起来是正确的。我们遇到的另一个警告是:当我们第一次进行更改时,它正确地将POM文件从消费者jar中排除,这意味着没有对consuer jar中的任何内容进行更改,所以它没有重建它!不用说,这给我们带来了一些困惑和挫折,直到我们注意到两个jar文件上的时间戳不同为止。我假设您需要过滤,因为原始的
true
。至于pom.xml,如果您想要它回来,您可能需要重新考虑
***.xml
模式。
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    <includes>
      <include>**/*.xml</include>
      <include>**/*.properties</include> 
    </includes>
  </resource>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>false</filtering>
    <excludes>
      <exclude>**/*.xml</exclude>
      <exclude>**/*.properties</exclude>  
    </excludes>
  </resource>
 <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>second-jar</id>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>without</classifier>
              <excludes>
                <exclude>**/*</exclude>
              </excludes>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>