【问题标题】:What's the "right" way to (temporarily) exclude sources from a maven build, and is there an easy way to do it from Eclipse?(暂时)从 Maven 构建中排除源的“正确”方法是什么,是否有一种简单的方法可以从 Eclipse 中做到这一点?
【发布时间】:2011-06-15 06:19:30
【问题描述】:

我是 maven 新手,对 Eclipse 也没有太多经验。

要在 Eclipse 中从构建中排除 java 文件,我右键单击文件并选择构建路径 -> 排除。这对于 Eclipse 中的“on-save”编译非常有用,但它不会传播到 maven 项目,所以当我使用 mvn install 构建我的项目时,它会尝试编译排除的源代码。

我已经进行了一些搜索,结果将我指向编译器插件和 功能,但是编辑 maven 项目文件以暂时从构建中排除文件似乎有点尴尬。

什么是(暂时)从 maven 构建中排除源的“正确”方法,是否有一种简单的方法可以通过 m2eclipse 插件或其他方式从 Eclipse 中做到这一点?

【问题讨论】:

    标签: eclipse maven-2 maven-3 m2eclipse


    【解决方案1】:

    如果你选择 maven 作为项目管理,那你真的要按照“maven 方式”来做。

    Eclipse 基于项目属性中指定的类路径构建项目,它与 maven 编译器插件的类路径无关。 “mvn compile”仅由编译器插件的配置驱动。

    通常,这些“临时”更改由附加到 Maven 目标(您从 cmd 运行的 Maven 插件/Mojo 目标)的 JVM 参数处理,您创建(自定义)并保存在“运行方式”>“运行配置”。我对 maven 使用命令行(shell)而不是 m2eclipse。更改参数对我来说更快。

    要找出可以使用的参数,您可以在 maven 依赖项中(只是临时)指定特定的 Mojo(maven 插件)并在 eclipse 中查看其源代码,您可以看到可以通过“ -D”JVM 参数。或者您可以查看文档。

    在编译器插件中有一个参数private Set<String> excludes = new HashSet<String>();但是很遗憾不能将集合参数指定为JVM参数...所以剩下的唯一选择就是在pom.xml中配置插件声明。

    然后还有配置文件,但它们对这种情况没有用。

    总而言之,您的要求相当罕见,从编译中排除 java 类不是通常的要求。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      您可以使用 Maven Compiler 插件中的 excludes> 参数来临时排除编译文件。

              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <version>2.3.2</version>
                  <configuration>
                      <excludes>
                          <exclude>**/model/*.java</exclude>
                      </excludes>
                  </configuration>
              </plugin>
      

      如果你使用 M2Eclipse 插件并运行 Maven->Update Project Configuration,pom 中排除的文件也应该自动从 eclipse 编译中排除。

      【讨论】:

      • 感谢您的示例代码,我猜这真的没有捷径可走:)
      猜你喜欢
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多