首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Maven 3.3不包括'javax.inject‘,而Maven 3.2包含’‘呢?

为什么Maven 3.3不包括'javax.inject‘,而Maven 3.2包含’‘呢?
EN

Stack Overflow用户
提问于 2015-08-08 17:06:45
回答 1查看 599关注 0票数 3

我的Maven构建在使用Maven 3.3.1时失败,但使用Maven 3.2.2成功。

到目前为止,我已经运行了/path/to/3.3.1/mvn clean compile -X,并将输出与/path/to/3.2.2/mvn clean compile -X生成的输出进行了比较。

maven-compiler-plugin / default-compile阶段中的以下块正好有一个不同之处:

代码语言:javascript
复制
[DEBUG] Populating class realm plugin>org.apache.maven.plugins:maven-compiler-plugin:3.2
[DEBUG]   Included: org.apache.maven.plugins:maven-compiler-plugin:jar:3.2
[DEBUG]   Included: com.google.dagger:dagger-compiler:jar:2.0
[DEBUG]   Included: com.google.dagger:dagger:jar:2.0
[DEBUG]   Included: com.google.dagger:dagger-producers:jar:2.0-beta
[DEBUG]   Included: com.google.guava:guava:jar:18.0
...

差异:虽然Maven 3.2.2打印[DEBUG] Included: javax.inject:javax.inject:jar:1,但Maven 3.3.1缺少它。

我不知道这是否有帮助,但这是我的有效构建插件:

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.2</version> <!-- 3.3 respectively -->
    <dependencies>
        <dependency>
            <groupId>com.google.dagger</groupId>
            <artifactId>dagger-compiler</artifactId>
            <version>2.0</version>
        </dependency>
    </dependencies>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <!-- workaround for http://jira.codehaus.org/browse/MCOMPILER-202 -->
        <forceJavacCompilerUse>true</forceJavacCompilerUse>
    </configuration>
</plugin>

我不明白的是:“填充类领域插件”到底是做什么的?为什么缺少一个jar,即使这两个maven版本都将其标识为依赖项?

编辑:在此例外情况下,生成失败:

代码语言:javascript
复制
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project ui: Compilation failure -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project ui: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
    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)
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:913)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 20 more

GitHub上有一个最小的示例项目。失败命令的完整输出是可用的这里

EN

回答 1

Stack Overflow用户

发布于 2015-08-08 20:33:22

问题不在于maven编译器插件的版本。

当您使用forceJavacCompilerUse选项时,它基本上会在您的JDK中使用javax.tool API实现。

由于您使用的是dagger-compiler,,它依赖于javax.inject,因此应该会将其拔出。

您可以尝试为您的匕首编译器插件依赖项添加提供的作用域,这样您就可以锁定所有传递的依赖项。

还要确保在运行时依赖项中添加了匕首依赖项。

请提供一些更详细的异常堆栈跟踪和其他相关的领域,您的pom,将帮助游客缩小问题,并指导您的快速!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31896462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档