Maven打包到指定位置

目录

前言

方式一:通过maven-jar-plugin指定outputDirectory输出路径

方式二:通过maven-resources-plugin指定outputDirectory输出路径

方式三:通过maven-antrun-plugin复制jar包

方式四:通过maven-antrun-plugin嵌入build.xml文件

方式五:使用distributionManagement设置存放路径

扩展:使用maven-dependency-plugin 插件将依赖包导出到指定文件夹


先赞后看,此生必赚

前言

maven打完jar包之后,默认放置位置是target目录

有时候项目需要,如何将jar包放置到指定的目录呢?

方式一:通过maven-jar-plugin指定outputDirectory输出路径

 可以排除某些配置文件,没有文件夹的话会自动创建!

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<configuration>
		<!-- 指定打包的jar包输出路径 -->
		<outputDirectory>D:\test</outputDirectory>
		<!--不打入jar包的文件类型或者路径 -->
		<excludes>
			<exclude>**/*.properties</exclude>
			<exclude>**/*.xml</exclude>
			<exclude>**/*.yml</exclude>
			<exclude>static/**</exclude>
			<exclude>templates/**</exclude>
		</excludes>
	</configuration>
</plugin>

方式二:通过maven-resources-plugin指定outputDirectory输出路径

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<executions>
		<execution>
			<id>copy-resources</id>
			<phase>package</phase>
			<goals>
				<goal>copy-resources</goal>
			</goals>
			<configuration>
				<encoding>UTF-8</encoding>
				<!--打成jar包后复制到的路径 -->
				<outputDirectory>
					D:\test1
				</outputDirectory>
				<resources>
					<resource>
						<!--项目中的路径 -->
						<directory>src/main/resources/</directory>
					</resource>
				</resources>
			</configuration>
		</execution>
		<!--可配置多个提取复制路径只需要 “<id>”名字不一样即可 -->
		<execution>
			<id>copy-bulid</id>
			<phase>package</phase>
			<goals>
				<goal>copy-resources</goal>
			</goals>
			<configuration>
				<encoding>UTF-8</encoding>
				<outputDirectory>
					D:\test2
				</outputDirectory>
				<resources>
					<resource>
						<directory>target</directory>
					</resource>
				</resources>
			</configuration>
		</execution>
	</executions>
</plugin>

方式三:通过maven-antrun-plugin复制jar包

Maven已经成为Java 工业领域事实上的构建标准,但在某些情况下,如果可以用Ant命令,还是很方便的。借助 maven-antrun-plugin 插件,可以在Maven执行时,额外执行Ant脚本如下列配置所示:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-antrun-plugin</artifactId>
	<version>1.8</version>
	<executions>
		<execution>
			<id>install</id>
			<phase>install</phase>
			<configuration>
				<target>
					<echo message="*******************install*******************" />
					<mkdir dir="${basedir}/target/classes" />
					<copy todir="../target/commons" overwrite="true">
						<fileset dir="${project.build.directory}"
							erroronmissingdir="false">
							<include name="*.jar" />
						</fileset>
					</copy>
					<move file="${project.build.directory}/xxxxxxx.jar"
						tofile="${project.build.directory}/xxx.jar" />
				</target>
			</configuration>
			<goals>
				<goal>run</goal>
			</goals>
		</execution>
		<execution>
			<id>clean</id>
			<phase>clean</phase>
			<configuration>
				<target>
					<echo message="*******************clean*******************" />
					<delete dir="target" />
					<mkdir dir="${basedir}/target/classes" />
				</target>
			</configuration>
			<goals>
				<goal>run</goal>
			</goals>
		</execution>
	</executions>
</plugin>

<execution>是可执行命令,可以修改maven的命令执行过程,下面的两个execution是修改了installclean

<echo>是打印命令;

<mkdir>是创建文件夹命令;(文件夹里面没有东西时好像不会创建出来)

<copy>是复制命令,其中todir是目标文件夹,overwrite是覆盖旧文件,<fileset dir="xxxx">是源文件,<include>是包含jar包;

<move>是移动文件或者修改名称命令

<delete>是删除命令;

${basedir} 指的是 项目根路径 
${project.build.directory} 指的是 target所在目录
${project.build.finalName} 指的是 jar包前缀名

方式四:通过maven-antrun-plugin嵌入build.xml文件

如下列配置所示:

将build.xml放到项目根路径下,使用<ant antfile="${basedir}/build.xml">嵌入build.xml文件即可。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-antrun-plugin</artifactId>
	<version>1.8</version>
	<executions>
		<execution>
			<id>install</id>
			<phase>install</phase>
			<configuration>
				<target>
					<property name="compile_classpath"
						refid="maven.compile.classpath" />
					<property name="runtime_classpath"
						refid="maven.runtime.classpath" />
					<property name="test_classpath"
						refid="maven.test.classpath" />
					<property name="plugin_classpath"
						refid="maven.plugin.classpath" />

					<ant antfile="${basedir}/build.xml">
						<target name="test" />
					</ant>
				</target>
			</configuration>
			<goals>
				<goal>run</goal>
			</goals>
		</execution>
	</executions>
</plugin>

方式五:使用distributionManagement设置存放路径

这种方式没有通过插件,而是直接配置distributionManagement

使用deploy命令可以部署到目标文件夹,没有文件夹的话会自动创建!

<distributionManagement>
	<repository>
		<id>localRepository</id>
		<url>file:D:/testRepository</url>
	</repository>
</distributionManagement>

扩展:使用maven-dependency-plugin 插件将依赖包导出到指定文件夹

这种方式是将依赖包输出到指定路径

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<executions>
		<execution>
			<id>copy-dependencies</id>
			<phase>package</phase>
			<goals>
				<goal>copy-dependencies</goal>
			</goals>
			<configuration>
				<!-- 指定输出路径 -->
				<outputDirectory>D:\test2</outputDirectory>
				<excludeTransitive>false</excludeTransitive>
				<stripVersion>false</stripVersion>
				<includeScope>runtime</includeScope>
			</configuration>
		</execution>
	</executions>
</plugin>

参考文献:

1.Referencing the Maven Classpaths

2.利用Maven插件将依赖包、jar/war包及配置文件输出到指定目录

3.maven-antrun-plugin的使用

4.centos7 搭建nexus 仓库配置和maven发布jar包到仓库

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: Maven是一种流行的项目构建工具,通过使用Maven,我们可以定义和管理项目的依赖关系,并在构建过程中执行各种插件。 当我们使用Maven进行项目构建时,可以使用指定的profile来帮助我们完成特定的构建需求。Profile是一种Maven的特性,它允许我们定义一组配置元素,以根据特定的需求来激活或禁用某些构建步骤或插件。 若要使用指定的profile进行打包,则需要在项目的pom.xml文件中进行配置。首先,在pom.xml文件中添加一个新的profile元素,可以指定profile的id、activation条件以及任何其他的配置元素。 在配置profile时,我们可以使用activation元素来定义何时激活这个profile。例如,可以根据环境变量、操作系统等条件来激活特定的profile。 接下来,我们需要在pom.xml文件中指定要使用的profile。可以通过在命令行中使用“-P”参数来指定。例如,可以使用以下命令来指定profile为"dev": mvn clean package -P dev 通过上述命令,Maven将使用指定的profile来执行打包操作。这样,在构建过程中,只有与指定profile相关联的插件和配置元素会被执行。其他未被激活的profile将被忽略。 需要注意的是,除了命令行,profile还可以通过其他方式进行指定,例如在IDE中进行配置或在Maven配置文件中进行设置。 总之,通过使用Maven的profile功能,我们可以根据特定需求来选择合适的profile,并通过指定命令行参数来进行打包操作,以达到定制化构建的目的。 ### 回答2: 要在Maven打包指定的profile,可以通过使用以下命令行参数来实现: ```shell mvn clean package -P profile-name ``` 在上述命令中,`profile-name`是你想要打包的profile的名称。Maven将会加载并应用指定的profile配置,并使用该配置来打包项目。 在项目的`pom.xml`文件中,可以定义多个不同的profile,并根据不同的需求进行配置。每个profile都有一个唯一的名称,并且可以通过以下格式在`<profiles>`元素下进行定义: ```xml <profiles> <profile> <id>profile-name</id> ... <!-- 配置信息 --> ... </profile> </profiles> ``` 在定义的profile中,可以包含任意数量的配置信息,如依赖、插件、环境变量等。这些配置信息将在打包命令中根据所选择的profile生效。 当运行`mvn clean package -P profile-name`命令时,Maven将会加载并应用指定的profile配置,并自动应用相关的依赖和插件。最终,Maven将会根据配置完成项目的打包工作。 通过使用Maven的profile功能,可以方便地根据不同的需求打包项目,提高开发和部署的灵活性。 ### 回答3: 要使用Maven打包指定Profile,首先需要在项目的pom.xml文件中配置Profile。在pom.xml文件中,可以使用<profiles>标签来定义不同的Profile。每个Profile可以有自己的id和相关配置。 首先,在pom.xml文件的<profiles>标签内,添加一个<profile>标签,设置Profile的id。比如,我们可以定义一个名为"prod"的Profile。在<profile>标签中,可以定义一些特定于该Profile的属性和配置。例如,可以设置不同的插件版本、依赖项、资源文件路径等。 然后,在<profiles>标签内的<profile>标签中,使用<activation>标签设置激活该Profile的条件。可以通过<activation>标签的条件设置来决定什么时候应该激活该Profile。比如,可以根据系统属性、环境变量、文件是否存在等条件来激活Profile。 接下来,在命令行中使用Maven命令来打包指定Profile。在命令行中,可以使用"-P"选项来激活特定的Profile。例如,使用以下命令来打包激活名为"prod"的Profile: mvn package -P prod 这样,Maven将会根据指定的Profile进行打包。它将使用<profiles>标签内所定义的相关配置、插件版本、依赖项等,从而生成特定的构建输出。 总结起来,要使用Maven打包指定Profile,我们需要在pom.xml文件中定义Profile并设置相关配置,然后在命令行中使用"-P"选项来激活指定的Profile。这样,Maven将会根据该Profile的配置进行打包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值