在Maven项目中指定依赖项的目标

时间:2014-07-24 19:08:25

标签: java maven java-ee jpa

在尝试查看此解决方案是否适用于我的项目时,How to share Persistence.xml between ejb module and web module in EAR?

我无法弄清楚Maven如何确定它在输出中打包文件的位置。

在我的Web项目中,它将依赖项放在/ WEB-INF / lib中。这是正确的地方,但我没有看到它。

在我的耳朵项目中,它将依赖项放在/中。这也是正确的地方,但我也没有看到它指定或知道如何覆盖它。

我希望我的耳朵项目中的web,ejb和其他依赖项继续进入/,但我希望将我的jpa / domain jar放在/ lib中。

我试过了:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <version>2.8</version>
      <executions>
        <execution>
          <id>copy</id>
          <phase>package</phase>
          <goals>
            <goal>copy</goal>
          </goals>
          <configuration>
            <artifactItems>
              <artifactItem>
                <groupId>my.group.org</groupId>
                <artifactId>myJpaProject</artifactId>
                <type>jar</type>
                <overWrite>false</overWrite>
                <outputDirectory>${project.build.directory}/lib</outputDirectory>
              </artifactItem>
            </artifactItems>
            <!-- other configurations here -->
          </configuration>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

但是这会把jar放在/target/lib/myJpaProject.jar中,同时将它放在耳朵文件中/内部。

我希望我所遗漏的内容显而易见,但我似乎无法在教程或文档中轻松找到它。

1 个答案:

答案 0 :(得分:0)

将共享库放在/ lib下的ear文件中的具体解决方案是为maven-ear-plugin设置defaultLibBundleDir标记。它会将<type>jar</type>的任何依赖项放在ear文件的/ lib目录中。

<plugin>
    <artifactId>maven-ear-plugin</artifactId>
    <configuration>
        <defaultLibBundleDir>lib/</defaultLibBundleDir>
    …
</plugin>