【问题标题】:how to exclude java sources from a third party jar?如何从第三方 jar 中排除 java 源?
【发布时间】:2010-01-29 01:18:11
【问题描述】:

我的 java 项目中有一个 jar 依赖项,它也包含源代码,当我运行 mvn compile 时,这些 java 源代码在我编译的 maven 输出中显示为类文件:(... 我怎样才能排除这些文件..(我只希望我自己编译的文件出现在编译输出中)

我尝试了类似的方法:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>2.1-SNAPSHOT</version>
 <configuration>
  <excludes>
    <exclude>**/bv/**/*.java</exclude>
   </excludes>
 </configuration>
</plugin>

玩过它,但它们一直出现在我的 maven 编译输出中:( ..

有什么想法吗?

【问题讨论】:

  • 你的“maven 编译输出”是什么意思?您的意思是包含源代码的第 3 方库在您的 WAR 文件中吗?
  • “也包含源”是什么意思?你的意思是 JAR 包含源代码和编译代码?
  • 退房 - old.nabble.com/… - 描述了这个问题。

标签: java maven-2


【解决方案1】:

我的理解是这是javac 的正常行为,它在整个类路径中搜索要编译的源文件,除非给出-sourcepath 选项(这将是这里的解决方案)。

不幸的是,Jira 存在一个关于 -sourcepath 没有被 Maven 编译器插件传递给 javac 的问题(请参阅 MCOMPILER-98),但有一个解决方法。那么,你能不能试试这个:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <compilerArguments>
      <sourcepath>${project.basedir}/src/main/java</sourcepath>
    </compilerArguments>
  </configuration>
</plugin>

【讨论】:

  • 没错,我在尝试解决它时也注意到了这个问题......但是确实注意到了解决方法。谢谢,我似乎工作.. ;)
【解决方案2】:

提供的作用域会起作用吗?

发件人:http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html

这很像编译,但是 表示您期望 JDK 或 提供依赖的容器 运行时。

【讨论】:

  • 不,因为它最终必须打包在一个war文件中,所以我看不到这是如何工作的......现在我将第三方源类打包在我自己的jar中作为类文件以及带有他的课程和来源的第三方罐子...... :(......听起来不太健康......
  • 让我看看我是否正确:您的 jar 依赖于第 3 方 jar,它也需要编译。第 3 方 jar 和你的 jar 将被包含在战争中......
【解决方案3】:

您可以将-implicit:none 参数传递给编译器

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <compilerArgument>-implicit:none</compilerArgument>
    </configuration>
  </plugin>

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多