Java Maven+;Eclipse编译失败,Maven在终端上编译正常
在试图从EclipseMars(4.5.1)内部编译Maven项目时,我遇到了一个问题 规格:Java Maven+;Eclipse编译失败,Maven在终端上编译正常,java,eclipse,maven,Java,Eclipse,Maven,在试图从EclipseMars(4.5.1)内部编译Maven项目时,我遇到了一个问题 规格: Win 7 SP1 x64 JDK x64 1.8.0_72 Eclipse x64 4.5.1 Maven 3.3.9 我认为这是一个Eclipse Maven插件交互问题,因为我能够从终端执行以下目标: mvn clean compile mvn generate-sources mvn install 在Eclipse中,当我右键单击项目名称并选择Maven install作为执行目标
- Win 7 SP1 x64
- JDK x64 1.8.0_72
- Eclipse x64 4.5.1
- Maven 3.3.9
mvn clean compile
mvn generate-sources
mvn install
在Eclipse中,当我右键单击项目名称并选择Maven install作为执行目标时,我得到以下错误:
项目扫描
正在生成project-name-1.0-SNAPSHOT
[警告]com.sun.xml.ws:jaxws rt:jar:2.2.10的POM无效,
可传递依赖项(如果有)将不可用,请启用调试
登录以获取更多详细信息
[信息]--jaxws-maven插件:2.3:wsimport(默认)@project name
[警告]com.sun.xml.ws:jaxws-tools:jar:2.2.10的POM是
无效的可传递依赖项(如果有)将不可用,
有关详细信息,请启用调试日志记录
[信息]处理:
文件:/C:/project name/src/main/resources/file.wsdl[INFO]
jaxws:wsimport参数:[-keep,-s,
C:\project name\target\generated sources\wsimport,-d,
C:\project name\target\classes,-encoding,UTF-8,-Xnocompile,
“文件:/C:/project name/src/main/resources/file.wsdl”]
[警告]未能为生成父项目
ws:bundles:pom:2.2.10
[警告]未能为生成父项目
ws:jaxws工具:pom:2.2.10
[警告]的POM无效
ws:jaxws-tools:jar:2.2.10,可传递依赖项(如果
任何)将不可用,有关详细信息,请启用调试日志记录
[信息]生成失败
[错误]无法执行目标
jax-ws-commons:jaxws-maven插件:2.3:wsimport(默认)on
项目名称:目标的执行默认值
org.jvnet.jax-ws-commons:jaxws-maven插件:2.3:wsimport失败:
字符串索引超出范围:-1->[帮助1]
[错误]要查看错误的完整堆栈跟踪,请使用重新运行Maven
e开关。[错误]使用-X开关重新运行Maven以启用完整
调试日志记录。[ERROR][ERROR]了解有关错误的详细信息
和可能的解决方案,请阅读以下文章:[错误]
[帮助1]
但是,如果我从终端执行mvn install
,目标就成功了!
我想我已经在Eclipse中安装了所有必要的Maven插件,pom.xml文件是正确的,因为通过终端一切似乎都正常。
希望有人能暗示这个问题
编辑:虽然mvn安装
在Eclipse中失败,但如果我在Eclipse中使用目标mvn安装-e
创建一个Maven构建配置,则问题不会发生。传递这面旗帜在某种程度上解决了这个问题
编辑:我粘贴了在Eclipse中触发问题的特定pom.xml部分(粗体文本是Eclipse用红色下划线的内容):
4.0.0
组名
我不能告诉您具体细节,但我已经看到了Eclipse工作/cmdline不工作的两种情况,反之亦然,特别是对于复杂的泛型和深度嵌套的接口
对我来说,Eclipse似乎正在进行一些自己的解析/字节码生成,可能是在工作表下面使用tools.jar,但我从来没有深入研究过(特别是因为我更喜欢IntelliJ,它使用本机maven和JVM,没有这个问题)
最终,您不能信任Eclipse,唯一可以确定的方法是生成cmdline(正如您所经历的那样)。首先,如果它在控制台中运行良好,那么您就有一个项目可以在支持Maven项目的每个IDE中导入。这是个好消息
其次,检查控制台和Eclipse中所选的maven概要文件(存储库配置,…)是否相同
然后,您可以在settings.xml中检查配置(在.m2目录中)
也许前面的回答也会有所帮助:
签入Maven>User Settings
,User Settings
指向与Maven相同的归档文件
您是否尝试过使用embbedone?我假设您必须重新组织您的pom.xml
:
<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.2.10</version>
</dependency>
</dependencies>
试试这个,希望能有所帮助。你有没有从Eclipse
中尝试mvn clean compile
?你在Eclipse中的settings.xml是否与在命令行中使用的相同?你有没有检查Eclipse是否使用了你的maven版本而不是embded版本?@mcoimbra我检查了你的pom.xml
,这有点奇怪。您必须关闭
。插件在
下,依赖性
在
下,我同意@Hohenheim。你能展示完整的pom吗?请检查原始问题的底部编辑,我认为它与你写的相符。你有什么建议去更深入地调查?放弃日食。对不起,这是一把瑞士军刀,有很多很多刀片,有些刀片不太好用。我在maven、java编译和git集成方面遇到了一些问题,我可以引导所有人远离它。我理解你的建议。然而,目前Eclipse是强制性的。Scott,您是否有任何额外的建议来开始深入研究Eclipse执行堆栈,以尝试了解哪些内容没有从Maven配置中正确读取?深入研究所有您想要的内容,有时问题可以解决,但有时无法解决。更新Eclipse插件,升级Eclipse,降级Eclipse,等等,有些事情可能会起作用,但是如果你被Eclipse困住了,那就是糟糕的gig。不幸的是,这是一个与Eclipse相关的问题。在终端中,Maven的行为符合预期。Hohenheim,我感谢你的建议,但我无法理解其中一些建议:-我的pom.xml中的标记没有缺失的's'
<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.2.10</version>
</dependency>
</dependencies>
<plugins>
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- https://jax-ws-commons.java.net/jaxws-maven-plugin/wsimport-mojo.html -->
<wsdlDirectory>${wsdl.directory}</wsdlDirectory>
<wsdlFiles>
<wsdlFile>${wsdl.filename}</wsdlFile>
</wsdlFiles>
</configuration>
<dependencies>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-tools</artifactId>
<version>2.2.10</version>
</dependency>
</dependencies>
</plugin>
<pluginS>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.12</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlLocation>http://mysite/firstwsdl.asmx?wsdl</wsdlLocation>
<packageName>com</packageName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>