Maven Eclipse打包"POM"无法工作

3
我正在使用带有Maven 3.3.3的Eclipse Mars(4.5)。
最近,我对一个Java 8项目进行了Maven更新,但突然间,Eclipse不再认为我的pom.xml中的jar有效,而是要求我将打包方式更改为pom。为什么我不能继续使用jar?
此外,在总览中,打包选项被禁用了。
当我使用jar打包从控制台运行maven时,我得到了以下结果:
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Child module C:\Users\Me\workspace\MyProject\? of C:\Users\Me\workspace\MyProject\pom.xml does not exist @
[ERROR] 'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging. @ line 8, column 13
 @
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[ERROR] Child module C:\Users\Me\workspace\MyProject\? of C:\Users\Me\workspace\MyProject\pom.xml does not exist @
[ERROR] 'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging. @ line 8, column 13

        at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:422)
        at org.apache.maven.graph.DefaultGraphBuilder.collectProjects(DefaultGraphBuilder.java:419)
        at org.apache.maven.graph.DefaultGraphBuilder.getProjectsForMavenReactor(DefaultGraphBuilder.java:410)
        at org.apache.maven.graph.DefaultGraphBuilder.build(DefaultGraphBuilder.java:83)
        at org.apache.maven.DefaultMaven.buildGraph(DefaultMaven.java:491)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:219)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR]
[ERROR]   The project MyProject:model:0.2 (C:\Users\Me\workspace\MyProject\pom.xml) has 2 errors
[ERROR]     Child module C:\Users\Me\workspace\MyProject\? of C:\Users\Me\workspace\MyProject\pom.xml does not exist
[ERROR]     'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging. @ line 8, column 13

有人能帮我吗?至少重新启用jar包装。

编辑:实际上,我的pom.xml文件中添加了一些新行(我不知道为什么或如何):

<modules>
    <module>?</module>
</modules>

那就是引起问题的原因。删除它后问题解决了,谢谢!

2
请添加您的POM文件,以便我们查看。 - Jorge Campos
是的,请将您的pom编辑到这个问题中。 - durron597
此外,将maven-compiler-plugin从1.7编辑为1.8几乎肯定不是问题的原因。你一定做了其他事情。 - durron597
你确定你没有在Eclipse中打开项目的上一级目录吗?通常它会尝试查找子POM并像这样添加模块。 - AlexGera
现在有点老了,我不太记得了,抱歉 ;) - Sylordis
2个回答

5

如果您的pom声明了模块,那么它就是一个“聚合POM” - 聚合模块必须是pom类型。这就是为什么您在日志中收到以下错误的原因:

[ERROR] 'packaging' with value 'jar' is invalid. 
    Aggregator projects require 'pom' as packaging. @ line 8, column 13

你可以在从pom中删除所有<module>声明后返回到jar
请参考多模块项目的文档。

添加了一些 <module>?</module> 行。那就是问题所在,谢谢! - Sylordis

0
一些奇怪的事情发生了,重启Eclipse后,我的pom文件中添加了一个带有“?”的附加“模块”。搜索并删除它,这将解决问题。

Module with ?

<module>?</module>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接