1

我有一个

src/main/resources/log4j.xml

我希望在执行 a 时将其包含在 jar 中,mvn assembly:assembly但在执行mvn package. 我怎么能这样做?

我在这里阅读了几个 Maven 文档和问题,但到目前为止我一直无法做到这一点。我尝试了很多方法,但都失败了。

基本上,我在<build><plugins>我的 pom 部分有:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
    </configuration>
</plugin>

然后在该<build>部分

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <excludes>
            <exclude>src/main/resources/log4j.xml</exclude>
        </excludes>
    </resource>
</resources>

但我到处都包含 log4j.xml。

4

2 回答 2

2

您放置在<exclude>or<include>元素中的任何内容都被视为相对于<directory>指定内容。因此,按照您目前拥有的方式,Maven 将尝试排除${basedir}/src/main/resources/src/main/resources/log4j.xml可能不存在的资源。尝试像这样设置资源元素:

<resources>
  <resource>
      <directory>src/main/resources</directory>
      <excludes>
          <exclude>**/log4j.xml</exclude>
      </excludes>
  </resource>

作为旁注,该assembly:assembly目标已被弃用。根据maven-assembly-plugin 文档,请改用single目标。

于 2013-11-12T14:26:39.613 回答
0

org.apache.maven.plugins工作正常,简单控制在包阶段包含或排除文件!

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <version>3.0.2</version>
   <configuration>
      <excludes>
         <exclude>**/password.properties</exclude>
      </excludes>
   </configuration>
</plugin>
于 2020-12-16T15:41:38.230 回答