maven导出项目中所有依赖jar包

本文介绍了如何使用maven-dependency-plugin插件导出Maven项目的依赖Jar包,包括具体配置示例,如使用copy和copy-dependencies目标来分别复制指定依赖项和整个依赖树。

maven导出项目中所有依赖jar包

开发时我们也许因为各种情况,需要导出maven的所有dependency项,如果去maven仓库找会显的相当繁琐。下面是简单的配置可以帮助我们轻松的得到所有的依赖jar。

之前使用:是使用maven-assembly-plugin 插件,发现所有依赖jar全部打到一个jar中,不能满足要求。


这里需要添加maven-dependency-plugin 这个插件。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
</plugin>


下面主要介绍两种常见使用:<goal> 为copy,和 copy-dependencies 的情况。

1.copy

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.0.1</version>
  <configuration>
    <artifactItems>
      <artifactItem>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
      </artifactItem>
    </artifactItems>
    <outputDirectory>target/lib</outputDirectory>
  </configuration>
  <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy</goal>
        </goals>
      </execution>
  </executions>
</plugin>
以上代码为copy的设置,此时需要自己指定 artifactItem (也就是需要打包的项)。outputDirectory为jar包输出目录。

此时运行maven打包命令: mvn clean package -Dmaven.test.skip=true。会在target/lib目录下生成我们配置的jar包。如下图所示:



2.copy-dependencies 。

copy-dependencies是指当前工程依赖包,它已经关联了我们pom.xml 中所有dependencies 依赖的jar。而我们不需要导出的jar包,可以用excludeArtifactIds排除,这里我们选择排除测试工具包junit 和 spring-boot-devtools 。然后同样可以指定生成目录。

spring-boot-devtools

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>3.0.1</version>
  <executions>
      <execution>
        <id>copy-dependencies</id>
        <phase>package</phase>
        <goals>
          <goal>copy-dependencies</goal>
        </goals>
        <configuration>
          <outputDirectory>target/lib</outputDirectory>
          <excludeArtifactIds>
            spring-boot-devtools,junit
          </excludeArtifactIds>
          <overWriteSnapshots>true</overWriteSnapshots>
        </configuration>
      </execution>
  </executions>
</plugin>


然后就可以得到我们想要的jar包了。是不是很方便了。

maven-dependency-plugin 的更多使用可以查看:http://maven.apache.org/components/plugins/maven-dependency-plugin/usage.html




<think>好的,用户的问题是关于如何使用Maven导出项目的所有依赖,并确保依赖所需的文件夹。我需要先理解用户的具体需求。通常,导出依赖Maven中可以通过依赖插件来实现,比如使用maven-dependency-plugin的copy-dependencies目标。但用户提到要含“依赖所需的文件夹”,这可能是指除了JAR文件之外的其他资源目录,比如配置文件、资源文件等。 首先,用户可能是在进行项目打包时,希望将所有依赖JAR文件以及它们所需的资源目录一起导出。标准的maven-dependency-plugin默认只会复制JAR文件,所以如果需要含其他资源,可能需要额外的配置。例如,在插件配置中指定includeTypes或者使用其他参数来含更多类型的文件。 然后,想到引用中的内容,用户提供的引用1提到Maven资源目录的打包处理,以及如何使用<Include-Resource>指令。虽然这是关于bundle插件的,但可能相关的思路可以应用到依赖导出中。例如,可能需要自定义资源含规则,或者使用占位符如{maven-resources}来含生成的资源列表。 接下来,用户可能需要配置maven-dependency-plugin的copy-dependencies目标,设置outputDirectory,并确保含所有需要的文件类型。另外,可能需要结合其他插件或配置来处理资源文件夹。例如,maven-resources-plugin可以用来复制项目资源,但依赖的资源可能需要不同的处理方式。 另外,用户的问题中可能涉及到依赖项中的资源文件夹,比如有些依赖Maven中除了JAR文件外,可能含其他目录。但通常情况下,Maven依赖JAR文件中已经含了所需的资源,因此导出JAR应该足够。但如果用户有特殊需求,比如某些依赖将资源放在特定的外部目录中,可能需要单独处理,例如通过解压JAR文件来获取这些资源,但这比较复杂。 总结可能的步骤:使用maven-dependency-plugin复制所有依赖JAR到指定目录,然后使用maven-resources-plugin复制项目本身的资源文件。如果需要依赖中的资源,可能需要解压JAR,或者确认依赖本身是否已经将资源打包JAR中,通常不需要额外处理。 还需要注意用户提到的“依赖所需的文件夹”是否指的是依赖本身需要的文件夹,比如native或者其他配置文件的位置。这时候可能需要配置插件来含这些目录,或者调整输出结构。 最后,根据引用1的内容,如果在配置资源含时,可以使用{maven-resources}来扩展默认的资源路径,这可能帮助用户自动Maven生成的所有资源,确保不遗漏。</think>### 分步解答:使用Maven导出项目依赖含所需文件夹 #### 步骤1:配置`maven-dependency-plugin`导出依赖 在`pom.xml`中添加以下配置,使用`copy-dependencies`目标将依赖JAR文件复制到指定目录(默认`target/dependency`): ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependencies</outputDirectory> <includeScope>runtime</includeScope> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 此配置会导出所有`runtime`作用域的依赖JAR文件,并保留其文件名[^1]。 --- #### 步骤2:项目资源文件夹 若需项目自身的资源文件夹(如`src/main/resources`),使用`maven-resources-plugin`: ```xml <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.3.0</version> <executions> <execution> <id>copy-resources</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/resources</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin> ``` 这会复制`src/main/resources`下的所有文件到`target/resources`。 --- #### 步骤3:处理依赖中的额外文件夹(高级场景) 若依赖JAR含需提取的文件夹(如配置文件),可通过`maven-dependency-plugin`解压特定依赖: ```xml <execution> <id>unpack-dependencies</id> <phase>package</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>com.example</groupId> <artifactId>example-library</artifactId> <version>1.0.0</version> <type>jar</type> <overWrite>true</overWrite> <includes>config/,static/</includes> <outputDirectory>${project.build.directory}/extracted</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> ``` 此配置会解压指定依赖中的`config/`和`static/`目录到`target/extracted`。 --- #### 验证输出结构 执行以下命令后检查输出目录: ```bash mvn clean package ``` 生成的目录结构应含: ``` target/ ├── dependencies/ # 所有依赖JAR ├── resources/ # 项目资源文件 └── extracted/ # 解压的依赖文件夹(如配置了步骤3) ``` --- ### 关键配置说明 1. **依赖范围控制**:通过`<includeScope>`可过滤依赖作用域(如`compile`/`test`)[^1] 2. **资源合并**:使用`{maven-resources}`占位符可自动Maven默认资源目录[^1] 3. **增量更新**:`<overWrite>true</overWrite>`确保文件更新时覆盖旧版本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值