原博客:http://ljhzzyx.blog.163.com/blog/static/3838031220138335540882/
mvn dependency:copy-dependencies可以准备好当前项目依赖的jar包,可以配置文件中scope为test的jar也包含进来了。生产系统发布的时候是不需要测试用的jar包的,如junit相关的包。想直接使用命令来指定copy的jar包的scope,可是貌似maven命令中没有提供这样的方式,网上也没找到例子。需要在pom.xml文件中做配置,配置参数在这里
在profile里面配置
<profile>
<id>compile-jar</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<configuration>
<outputDirectory>${lib.dir}</outputDirectory>
<includeScope>compile</includeScope>
</configuration>
</plugin>
</plugins>
</build>
</profile>
通过-P参数来激活
mvn dependency:copy-dependencies -P compile-jar
这样就可以只copy compile级别的jar包了。
一开始把configuration配到了executions的内部,这样不生效。configuration要与executions同级,其内部的includeScope这样的属性才有效。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<excludeScope>test</excludeScope>
<excludeArtifactIds>junit,dbunit,mockito-all</excludeArtifactIds>
<excludeTransitive>true</excludeTransitive>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
不配置直接使用命令行是这样
mvn dependency:copy-dependencies -DincludeScope=compile
不过compile scope还有问题,比如
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
这时provided级别的jar包也会复制过去,有的时候会出错。比如javaee-web-api的jar包部署到weblogic中,会报找不到jsf相关的jar包找不到的错误,部署不成功(tomcat不会)。所以运行的项目使用runtime的scope才合适。具体各个scope的含义,插件官网有说明:
runtime : scope gives runtime and compile dependencies,
compile : scope gives compile, provided, and system dependencies,
test (default) : scope gives all dependencies,
provided : scope just gives provided dependencies,
system : scope just gives system dependencies.
上面所举的例子中,有个参数<excludeTransitive>true</excludeTransitive>,默认是false。如果是true则只复制pom文件中定义了的jar,这样一般不符合需求,所以一般不用配置excludeTransitive参数。profile这种方式也不是必须的,configuration要与executions同级,则像下面这样配置也行
<plugin>
<configuration>
<excludeScope>provided</excludeScope>
<excludeArtifactIds>junit,dbunit,mockito-all</excludeArtifactIds>
<excludeTransitive>false</excludeTransitive>
<includeScope>runtime</includeScope>
</configuration>
<executions>
......
</executions>
</plugin>
各个参数的详细含义见:
http://maven.apache.org/plugins/maven-dependency-plugin/copy-dependencies-mojo.html
相关推荐
本文将详细讲解如何使用Maven来打包一个Java项目,并创建JAR文件。 首先,Maven有三个主要生命周期阶段:`clean`、`default`(也称为`compile`)和`install`。每个阶段包含一系列的阶段(或者称为目标,如`compile`...
"Maven引入本地Jar包并打包进War包中的方法" Maven是一种流行的项目管理工具,主要用于Java项目的构建、测试和部署。在实际开发中,我们经常需要引入本地Jar包以满足项目的需求。本文将介绍Maven引入本地Jar包并...
本文将深入探讨Maven的核心概念、工作原理以及如何使用Maven下载的jar包库。 **1. Maven简介** Maven是由Apache软件基金会开发的一个项目管理工具,它基于项目对象模型(Project Object Model,POM)的理念,通过...
Maven的本地仓库是Maven系统的核心组件之一,它存储着项目所需的各类依赖库,包括JAR包。当你在开发过程中引用了一个库,Maven会尝试从中央仓库下载该库到本地仓库,以便后续的编译和构建步骤能够访问到。 本地仓库...
本文将深入探讨"Maven中主要jar包集合"这一主题,旨在帮助初学者理解Maven的工作原理以及如何利用它来高效地管理jar包。 首先,我们要明白什么是Maven。Maven是Apache软件基金会开发的一个项目管理和综合工具,主要...
由于JxBrowser在maven仓库中可能不再可用,对于需要使用此库的开发者来说,直接下载jar包并将其部署到本地或私有Maven仓库是必要的步骤。 首先,我们需要理解Maven仓库的概念。Maven仓库是存储项目依赖的地方,分为...
当你运行`mvn install`或`mvn compile`命令时,Maven会从中央仓库检索这个包,并将其放入本地仓库。如果Maven无法从中央仓库找到该依赖,你可能需要检查你的网络设置或联系库的开发者。 一旦`QRCode.jar`被成功下载...
在描述中提到的“maven 自动下载jar包工具”,实际上就是指利用Maven的特性来自动化处理jar包的下载。在传统的Java开发中,开发者需要手动下载所需的jar包并添加到项目的类路径中。而Maven通过其配置文件pom.xml,...
本文将深入探讨Maven如何用于构建Kettle项目,并解析与之相关的jar包的重要性。 首先,Maven是一个广泛使用的Java项目管理工具,它提供了一种标准化的方式来管理和构建Java项目。Maven通过依赖管理和项目信息管理,...
Maven jar包是Maven的核心组件,包含了执行Maven命令所需的所有依赖和资源。这篇博客(链接已给出)可能介绍了如何找到并下载Maven的jar包。 首先,我们来理解Maven的基本概念。Maven是一个项目管理和综合工具,它...
在Java开发中,Maven仓库是一个至关重要的组成部分,它存储了大量的jar包,这些包包含了各种预编译的类和库,使得开发者无需从零开始构建项目。Maven仓库分为本地仓库、中央仓库和远程仓库,其中"maven-repository...
当 Maven 构建项目时,它会从预设的 Maven 仓库(如 Maven Central Repository)中查找并下载这些依赖的 JAR 包,确保项目的运行环境完整。 **构建生命周期** Maven 的构建生命周期包括三个阶段:Clean、Default ...
Maven提供了内置的目标来构建JAR包。最常用的是`package`目标,它会编译源代码,运行测试,并打包成可部署的形式。在命令行中,你可以输入以下命令来执行这个目标: ``` mvn package ``` 4. **配置JAR插件**: ...
"maven本地仓库jar包"指的是在Maven项目中使用的各种库文件,以.jar格式存储在用户的本地仓库中。本地仓库是Maven系统的一个重要组成部分,它缓存了从远程仓库下载的依赖,以便于重复使用和快速构建。 Maven使用一...
** Maven核心程序jar包详解 ** Maven是Java开发中的一个关键工具,它是一个项目管理和综合工具,由Apache Software Foundation维护。Maven的核心程序jar包是实现自动化构建、依赖管理和项目信息管理的基础。在给定...
这将将 Maven 项目依赖的 jar 包导出到 lib 目录中,并且只包括 compile 级别的依赖项。 结论 通过这篇教程,我们学习了如何将 Maven 项目依赖的 jar 包导出到指定目录中。这些方法可以帮助我们更好地管理项目依赖...
在IDEA中,可以通过点击“Maven”面板,找到对应的生命周期阶段(如`clean`, `compile`, `package`),或者在命令行中执行`mvn clean package`来完成打包混淆的整个流程。 4. **验证混淆结果**: 打包完成后,...
`maven-archetype-quickstart-1.1.jar` 是一个Maven的快速启动 archetype 包,专门用于帮助开发者快速创建一个新的Maven项目结构。在这个压缩包中,你将找到一个预设的Java项目模板,以便于你能够迅速地开始编码。 ...
【标题】"maven打jar包" 在Java开发中,Maven是一款强大的项目管理工具,它可以帮助开发者构建、管理和部署项目。"maven打jar包"是指使用Maven来打包Java应用程序,将其编译后的类文件和相关资源打包成一个可执行的...
Maven+SpringBoot打成JAR包的方法 Maven是Apache软件基金会的一个开源项目,主要用于Java项目的自动化build、测试、打包、部署等过程。SpringBoot是一个基于Java的框架,用于快速构建生产级别的应用程序。本文将...