Maven依赖插件报错maven-dependency-plugin (goals "copy-dependencies", "unpack") is not supported by m2e.的解决

开发的java项目需要部署在服务器上,以
nohup java -cp $javaclasspath:${APP}

的方式去启动运行,因而需要将maven管理的依赖拷贝出来,随项目jar一起部署

使用maven-dependency-plugin插件来做拷贝工作,如下所示:

<build>
	<plugins>
		<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>${project.build.directory}/lib</outputDirectory> -->
						<overWriteReleases>false</overWriteReleases>
						<overWriteSnapshots>false</overWriteSnapshots>
						<overWriteIfNewer>true</overWriteIfNewer>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>


发现项目编译报错,错误内容如下所示:


解决办法:

在<build>节点内,<plugins>节点之前加入

        <pluginManagement>
			<plugins>
				<!-- Ignore/Execute plugin execution -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-dependency-plugin</artifactId>
										<versionRange>[1.0.0,)</versionRange>
										<goals>
											<goal>copy-dependencies</goal>
											<goal>unpack</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>

完整的pom配置如下所示:

    <build>
		<pluginManagement>
			<plugins>
				<!-- Ignore/Execute plugin execution -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>org.apache.maven.plugins</groupId>
										<artifactId>maven-dependency-plugin</artifactId>
										<versionRange>[1.0.0,)</versionRange>
										<goals>
											<goal>copy-dependencies</goal>
											<goal>unpack</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
		<plugins>
			<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>${project.build.directory}/lib</outputDirectory> -->
							<overWriteReleases>false</overWriteReleases>
							<overWriteSnapshots>false</overWriteSnapshots>
							<overWriteIfNewer>true</overWriteIfNewer>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

Maven项目同步时出现“Non-resolvable parent POM”错误通常表示Maven无法找到或解析项目的父POM文件。这种问题可能由多种原因引起,包括本地仓库缓存损坏、远程仓库配置错误、网络问题或POM文件中配置的父项目路径不正确等。 以下是解决该问题的多种方法: ### 1. 清理本地Maven仓库中相关的依赖 Maven会缓存无法下载的依赖元数据,导致后续构建尝试不再重新下载。可以通过删除本地仓库中对应依赖的文件夹来强制Maven重新下载。例如,如果错误提示找不到`org.springframework.boot:spring-boot-starter-parent:2.5.3`,则应删除本地仓库中`org/springframework/boot/spring-boot-starter-parent/2.5.3`目录,然后重新加载项目[^2]。 ### 2. 检查`pom.xml`中的父POM配置 确保`pom.xml`中`<parent>`部分配置正确,包括`groupId`、`artifactId`和`version`是否正确,并且`<relativePath>`指向本地父POM文件的路径(如果使用本地父POM)。如果父POM不在默认路径下,应明确指定`<relativePath>`,例如: ```xml <parent> <groupId>com.example</groupId> <artifactId>my-parent</artifactId> <version>1.0.0</version> <relativePath>../my-parent/pom.xml</relativePath> </parent> ``` 如果使用的是远程父POM,则可以省略`<relativePath>`标签[^3]。 ### 3. 检查Maven的`settings.xml`配置 确保`settings.xml`中配置的远程仓库地址正确,尤其是如果使用了镜像(如阿里云镜像)。例如: ```xml <mirrors> <mirror> <id>alimaven</id> <name>Aliyun Maven</name> <url>https://maven.aliyun.com/repository/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ``` 如果镜像配置错误,可能导致Maven无法访问正确的远程仓库,从而无法解析父POM[^1]。 ### 4. 强制更新依赖 运行Maven命令时加上`-U`参数,强制更新依赖,例如: ```bash mvn clean install -U ``` 这将忽略本地仓库的缓存,并强制从远程仓库重新下载依赖[^2]。 ### 5. 检查网络连接 确保开发环境能够正常访问Maven中央仓库或配置的远程仓库。可以通过浏览器或命令行测试访问相关URL,例如: ```bash curl -v https://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-starter-parent/2.5.3/spring-boot-starter-parent-2.5.3.pom ``` 如果无法访问,可能是网络或代理设置问题。 ### 6. 使用Maven Help插件检查问题 可以使用Maven Help插件来诊断POM文件中的问题: ```bash mvn help:effective-pom ``` 该命令将输出最终生效的POM文件,有助于发现配置错误或冲突。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值