我最近开始使用maven和eclipse。
我已经设置了几个项目,我注意到如果我尝试指定项目目录之外的构建目录(覆盖目标),那么在执行“更新项目”时会出错:< / p>
'正在更新Maven项目'遇到了问题。
在“更新MAven项目”期间发生内部错误。 路径必须包含项目和资源名称:/ [我的项目名称]
我需要在项目之外进行构建。我怎么能绕过这个?我可以让maven自动创建一个软链接吗?
答案 0 :(得分:5)
虽然这是一个相当老的线程,但我最近遇到了这个问题,并且能够解决它。 maven抛出此错误的原因是我在pom.xml
文件中的某个地方,一个绝对路径与项目导入eclipse的目录不一致。所以我有两个绝对路径(一个不正确,或指向前一个位置)指向project.build.outputDirectory
文件中的资源,即pom.xml
。
解决方案:找到错误的绝对路径/home/userA/ProjectB/bin
,并替换为相对的./bin
路径。在eclipse中更新项目,你应该没问题。
答案 1 :(得分:1)
这是一个有点老的线索,但因为没有人给出正确答案......
以下Eclipse错误:
An internal error occurred during: "Updating Maven Project".
java.lang.IllegalArgumentException: Path must include project and resource name:
at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)
at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:2069)
at ...
可能出现在许多不同的场景中 - 在Eclipse Bugzilla中你可以找到很多类似的bug报告。
在您描述的情况下,这是已知限制。但这不是m2e
错误 - 只是Eclipse JDT
不允许在项目之外设置输出目录。
恕我直言,很遗憾,因为如果maven支持这样的布局,那么我希望m2e
也是如此。
我已将其报告为bug 493229。但已关闭状态 WONTFIX 。
答案 2 :(得分:0)
例如,如果您希望在工作区外的某个文件夹中构建内容,则可以使用以下内容:
<build>
<plugins>
<plugin>
<executions>
<execution>
<phase>move-build</phase>
////do your build
</plugin>
<plugin>
<executions>
<execution>
<id>copy-resources</id>
<phase>move-build</phase>
// do your copying to external
</plugin>
<plugin>
<executions>
<execution>
<phase>move-build</phase>
// do your deletions from target
</plugin>
</plugins>
</build>
然后您可以致电mvn move-build
进行构建,复制,删除。
以下是copy to external folder和delete的示例,您可以将它们组合到您的移动构建阶段,如上所述
答案 3 :(得分:0)
why can't I build somewhere like ../build
是的,你可以构建一个名为build的文件夹,只要它包含pom.xml
。
pom.xml
文件是Maven中项目配置的核心。它是一个单一的配置文件,包含构建项目所需的大部分信息。
简而言之,pom.xml
将拥有构建项目的所有信息。
pom.xml
是一个文件,其中包含Maven使用的项目配置详细信息。它提供了项目所需的所有配置。
答案 4 :(得分:0)
要回答问题中的最后一段,您可以使用软链接解决问题。我做的与你猜测的有点不同。创建符号链接不是Maven,因为这是Eclipse JDT的问题(正如其他人所指出的那样),有时会运行而不会调用Maven(似乎)。这就是我所做的,包含与Maven项目目录相关的所有路径:
1)我希望我的实际构建目录为“../../ local / java / scratch / target”
2)我创建了一个软链接:@SpringBootApplication
@Controller
public class AngularApplication {
public static void main(String[] args) {
SpringApplication.run(AngularApplication.class, args);
}
@GetMapping("/resource")
@ResponseBody
public Map<String, Object> home() {
Map<String, Object> model = new HashMap<String, Object>();
model.put("id", UUID.randomUUID().toString());
model.put("content", "Hello World");
return model;
}
}
3)我将此条目添加到我的“pom.xml”:
ln -s ../../local ./
现在,Eclipse JDT很高兴地认为它正在项目目录中构建,但实际上路径“../../”将其置于项目目录之外。我的猜测是绝对路径也会起作用。
答案 5 :(得分:0)
我确信这个问题是由 Maven 或 Eclipse 引起的,也许是因为我在 Stackoverflow 上发现了这个和其他对该组合的引用。
经过大量调查并有点生气,结果证明是 Git 参与了——尽管我不知道这是不是原因。
我的Maven项目由几个“嵌套”的POM组成,我没有在Eclipse中打开父POM,而只打开子POM。我在顶层有几个文件(批处理脚本)我没有提交给 Git,但是一旦我提交了这些
import template from './custom-product-detail.html.twig';
const { Component, Mixin } = Shopware;
const { Criteria } = Shopware.Data;
const newLocal = 'custom_product';
Component.register('custom-product-detail', {
template,
inject: [
'repositoryFactory',
],
mixins: [
Mixin.getByName('notification')
],
metaInfo() {
return {
title: this.$createTitle()
};
},
data() {
return {
module: null,
isLoading: false,
processSuccess: false,
repository: null
};
},
created() {
this.repository = this.repositoryFactory.create(newLocal);
this.getCustom();
},
computed: {
propertyGroupRepository() {
return this.repositoryFactory.create('property_group');
},
customProperties() {
const criteria = new Criteria();
criteria.addFilter(Criteria.equals('relations.entityName', 'property_group'));
return criteria;
}
},
methods: {
getCustom() {
this.customProperties();
const criteria = new Criteria();
criteria.addAssociation('propertyGroupTranslation');
this.repository
.get(this.$route.params.id, Shopware.Context.api, criteria)
.then((entity) => {
this.module = entity;
});
},
onClickSave() {
this.isLoading = true;
this.repository
.save(this.module, Shopware.Context.api)
.then(() => {
this.getCustom();
this.isLoading = false;
this.processSuccess = true;
}).catch((exception) => {
this.isLoading = false;
this.createNotificationError({
title: this.$t('custom-variant-product.detail.error-message'),
message: exception
});
});
},
saveFinish() {
this.processSuccess = false;
}
}
});
问题完全消失。
<块引用>Eclipse 版本:2020-12 (4.18.0)