gpt4 book ai didi

java - 在 Maven 中部署用于生产的 jar

转载 作者:行者123 更新时间:2023-11-30 09:34:34 25 4
gpt4 key购买 nike

我的产品中有多个 Java 项目(打包到 jars 中),它们有一个 pom 将它们组合为模块。每个项目都有不同的依赖关系,它们的组合依赖关系在父 pom 中定义。我想为生产准备输出并执行以下操作:

  1. 将我所有的 jar 部署(复制)到一个位置
  2. 将所有项目的第 3 方 jar 复制到不同的单个文件夹
  3. 将配置文件(位于 src/main/resources 下)从所有项目复制到第三个文件夹。

有人知道无需为所有项目手动复制上述各项的方法吗?我还希望我 future 的项目能够支持此部署过程,而不必过于努力和具体地工作。

最佳答案

为此您需要使用 Maven 程序集插件 - 这里是压缩分发包的示例(在生产环境中您只需要解压缩):

  <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>

和程序集 XML

 <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>${env}</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<dependencySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact>
<includes>
<include>com.mycompany:ear-project</include>
<include>com.mycompany:jnlp-project</include>
</includes>
<outputDirectory>libs</outputDirectory>
</dependencySet>
</dependencySets>

<fileSets>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>target/docbook/pdf</directory>
<includes>
<include>index.pdf</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>

请注意,对于您的 2 个项目(EAR、JNLP),您可以通过 outputDirectory 配置放置依赖项。

关于java - 在 Maven 中部署用于生产的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11754119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com