Description Resource Path Location Type Path must include project and resource name: /

前言

  • eclipse 2019-12 (4.14.0)
  • jdk 1.8
  • Apache Maven 3.6.1
  • spring boot 2.2.13.RELEASE

错误

Description	Resource	Path	Location	Type
Path must include project and resource name: / (org.apache.maven.plugins:maven-jar-plugin:2.4:jar:default-jar:package)

java.lang.IllegalArgumentException: Path must include project and resource name: /
	at org.eclipse.core.runtime.Assert.isLegal(Assert.java:66)
	at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:2122)
	at org.eclipse.core.internal.resources.Container.getFolder(Container.java:205)
	at org.sonatype.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator.mavenProjectChanged(AbstractMavenArchiverConfigurator.java:220)
	at org.sonatype.m2e.mavenarchiver.internal.AbstractMavenArchiverConfigurator$1.build(AbstractMavenArchiverConfigurator.java:165)
	at org.eclipse.m2e.core.internal.builder.MavenBuilderImpl.build(MavenBuilderImpl.java:135)
	at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:169)
	at org.eclipse.m2e.core.internal.builder.MavenBuilder$1.method(MavenBuilder.java:1)
	at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$1(MavenBuilder.java:114)
	at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:179)
	at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:114)
	at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$0(MavenBuilder.java:105)
	at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:179)
	at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:153)
	at org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:101)
	at org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:88)
	at org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:197)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:833)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:220)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:263)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:316)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:319)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:371)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:392)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:154)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:244)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
	pom.xml	/ymsso-admin	line 14	Maven Build Problem

原因

  • 这个错误只在eclipse中会报出。如果我不用eclipse,而只用mvn命令行编译项目时没有错误。
  • 这个错误的大意是:打包成jar时,发现你设置的输出目录未在本项目内(出圈了!)。
  • 其实这个错误是eclipse的插件m2e引起的,所以只用mvn命令行时,没这个错误。

我的项目时maven的多模块项目,如下:

myapp
├─module1
├─module2
└─admin
    └─.pom.xml

我希望打包时,在项目的根目录生成jar,因此改造admin/pom.xml如下:

<project>
	...
    <properties>
        <main.basedir>${basedir}/..</main.basedir>
        ...
    </properties>
	<build>
    	<directory>${main.basedir}/target/admin</directory>
    	...
    </build>
    ...
</project>

解决办法1:在maven-jar-plugin插件中配置outputDirectory

admin/pom.xml改造为:

<project>
	...
    <properties>
        <main.basedir>${basedir}/..</main.basedir>
        ...
    </properties>
    <build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<outputDirectory>${main.basedir}/target/admin</outputDirectory>
				</configuration>
			</plugin>
			...
		</plugins>
		...
	<build>
</project>
  • 如果 maven-jar-plugin 输出的就是你想要的,那这个方式还是不错的。
  • 如果是 spring boot 项目,maven-jar-plugin 输出的不含springboot,不是最终结果,不要用这个方式。

解决办法2:在spring-boot-maven-plugin插件中配置outputDirectory

admin/pom.xml改造为:

<project>
	...
    <properties>
        <main.basedir>${basedir}/..</main.basedir>
        ...
    </properties>
    <build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>2.1.1.RELEASE</version>
				<configuration>
					<fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>repackage</goal>
						</goals>
						<configuration>
							<outputDirectory>${main.basedir}/target/admin</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
			...
		</plugins>
		...
	<build>
</project>
  • 嗯,这个就是适合springboot的解决办法

参考

https://stackoverflow.com/questions/25206689/maven-with-eclipse-error-path-must-include-project-and-resource-name/27562184#27562184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值