使用maven生成runnable jar时如何避免资源覆盖?

时间:2014-05-16 00:52:45

标签: java maven jar

我有一个maven项目,并且依赖一个包含一个资源文件的jar(c3p0.xml),我将资源复制到我的src / main / resource文件夹中,并根据我的要求更改内容,以便我可以使用它。

enter image description here

但是在我运行 mvn assembly:assembly 命令之后,生成的jar包含资源的内容是旧的依赖jar而不是我在src / main / resource中的内容如何处理它?<​​/ p>

我的pom.xml的主要内容如下:

<plugin>
            <!-- mvn assembly:assembly -->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>com.fastcheck.RequestUrl</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

2 个答案:

答案 0 :(得分:0)

jar-with-dependencies组件机制使用您声明的maven依赖项,而不是资源目录中的内容。如果要使用较新版本的jar,请在.pom文件中声明较新版本作为依赖项。

答案 1 :(得分:0)

你应该将maven-assembly-plugin绑定到构建生命周期,如下所示:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      [...]
</project>

将在包寿命周期阶段执行maven-assembly-plugin