Java 为Maven项目中的依赖项指定目标

Java 为Maven项目中的依赖项指定目标,java,maven,jakarta-ee,jpa,Java,Maven,Jakarta Ee,Jpa,在尝试查看此解决方案是否适用于我的项目时 我无法理解Maven如何确定它在输出中打包文件的位置 在我的web项目中,它将依赖项放在/web-INF/lib中。这是正确的地方,但我看不出有什么特别的地方 在我的ear项目中,它将依赖项放在/。这也是正确的位置,但我也没有看到它被指定或知道如何覆盖它 我希望我的web、ejb和ear项目中的其他依赖项继续转到/,但我希望我的jpa/域jar放在/lib中 我试过: <build> <plugins> <plu

在尝试查看此解决方案是否适用于我的项目时

我无法理解Maven如何确定它在输出中打包文件的位置

在我的web项目中,它将依赖项放在/web-INF/lib中。这是正确的地方,但我看不出有什么特别的地方

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

我希望我的web、ejb和ear项目中的其他依赖项继续转到/,但我希望我的jpa/域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>

org.apache.maven.plugins
maven依赖插件
2.8
复制
包裹
复制
my.group.org
MyJPA项目
罐子
假的
${project.build.directory}/lib
但这会将jar放在/target/lib/myJpaProject.jar中,而将其留在ear文件中


我希望我所缺少的是显而易见的,但我似乎无法在教程或文档中找到它。

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

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

maven耳朵插件
解放党/
…

您试图做的不是Java EE 5或Java EE 6标准的一部分。那么你期待什么呢?我只是想测试一下上面链接中给出的可能性。大多数情况下,我想我是在寻找对使用gnu make等构建工具进行打包的那种控制——如何指定要打包依赖项的位置?通常打包是在
target
文件夹和一些与运行构建过程无关的临时文件夹中完成的。有一点非常重要。Maven不是制造者。在
target
文件夹中,您会发现文件夹是ArtifactName版本,其中包含这些内容。因此,执行上述操作后,我将myJpaProject.jar放入正确的目标文件夹,但不在jar中的正确位置,因此我猜phase=package不是在打包之前,而是在打包之后。我将尝试选择一个早期阶段,看看它是否会出现在jar中的新位置。Maven是一个构建工具,所以虽然它不是make或Ant,但它的开发应该朝着提供竞争对手提供的所有功能和灵活性的方向发展。