【问题标题】:Organize imports with Maven2, Eclipse-style?用 Maven2 组织导入,Eclipse 风格?
【发布时间】:2009-10-30 20:05:05
【问题描述】:

我是一个在 Eclipse 上挂断的小组中的一个单独的 Emacs 用户。代码差异一次又一次地因 Eclipse“组织”或“清理”的导入而变大。

我对 Java 中的导入样式这个主题没有强烈的意见,但我确实想尽量减少我们的差异。我能做什么?

我们使用 Maven2 进行构建;有没有可以帮助我的插件?可以将 Eclipse 的一部分抽象出来并变成 Maven 插件吗?我目前使用ImportScrubber 并且遇到了其他一些做同样事情的独立部分。我真正想要的是一个可以与构建集成的 Maven 插件。

除上述情况外,我会将 ImportScrubber 调用放入我的 .git/hooks/post-commit。

【问题讨论】:

  • 请注意,Eclipse 所做的一件事是解析对单个类的导入,例如“日期”绝不含糊。
  • 试试这个答案:stackoverflow.com/a/46679149/95073

标签: java eclipse maven-2 maven-plugin


【解决方案1】:

openArchitectureWare 项目(一个开源生成器框架)内部使用的 Hybridlabs 美化器正在做您正在寻找的事情。正如blog entry 中所解释的,美化器可用作Google Code project,其documentation 描述了一个maven 2 插件:

<plugin>
    <groupId>org.hybridlabs</groupId>
    <artifactId>maven-beautifier-plugin</artifactId>
    <executions>
         <execution>
             <goals>
                 <goal>beautify-imports</goal>
             </goals>
         </execution>
     </executions>
    <configuration>
         <!-- Recursively scan for *.java and beautifies imports -->
         <inputDirectory>${pom.basedir}/..</inputDirectory>
         <!--outputDirectory>${pom.basedir}/..</outputDirectory>
         <runBeautifier>true/runBeautifier>
         <runJalopy>false</runJalopy-->
    </configuration>
</plugin>

source tree 中确实有一个 mojo,但它与上面提到的groupId 不匹配(这有点令人困惑)并且我无法在 maven 的公共存储库中找到该插件。

也许您会更幸运地使用 AndroMDA 插件存储库中可用的版本,如 this thread 中所述(该插件确实存在于 http://team.andromda.org/maven2/ 中)。

插件在 org.apache.maven.plugins.maven-beautifier-plugin。 它可以以简写形式运行: mvn beautifier:beautify-imports。它 也可以作为项目的一部分运行 pom 通过添加插件声明 &lt;build&gt;&lt;plugins&gt;下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-beautifier-plugin</artifactId>
    <version>1.0</version>
    <executions>
        <execution>
            <goals>
                <goal>beautify-imports</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <inputDirectory>${pom.basedir}/target/src</inputDirectory>
    </configuration>
</plugin>

或联系项目作者(例如通过twitter 或邮件)。

【讨论】:

  • 我认为这个插件现在可以在 Maven 中心作为 org.andromda.maven.plugins:andromda-beautifier-plugin:3.4 使用。其目的是将代码中的完全限定类名转换为导入语句,而不是清理现有的导入语句。在我的代码上尝试过,它似乎什么也没做!
【解决方案2】:

我认为你们所有人(Eclipse、Emacs 或任何用户)都应该使用像 Jalopy 这样支持Eclipse 和Maven 的东西。这样,只要代码通过漂亮打印机运行作为签入代码的一部分,它就变得无关紧要了。说 - 我不确定 Jalopy 是否支持组织导入而不是对这些进行排序

【讨论】:

  • Jalopy 很好,我买了它的许可证。不幸的是,其他人都打算掏出 20 欧元,所以我只能将其用于我一个人从事的项目......
【解决方案3】:

我还找到了ImportScrubber plugin。尚无法证明其质量。

【讨论】:

  • 那个导入清理器插件看起来像是 Maven 1 的遗留物。我不完全确定,但其中涉及到果冻。
  • 对此进行了更多调查。 IT 要求首先编译文件,然后从 .class 文件中确定导入的内容。它也有一些限制,例如如果您静态导入一个常量,但不要使用包含该常量的类,它将被删除并破坏您的代码。它也很老了,它甚至可以与 Java 5、6、7、8 一起使用吗?
【解决方案4】:

您的商店是否有关于如何组织导入的代码标准?如果是这样,那么你就不走运了。最小化差异是为增量代码改进做出的小牺牲。

【讨论】:

  • 除了“确保它有效”之外,我们没有其他标准。 :) 说真的,我们甚至无法克服“Windows/Unix 行尾”带来的不便。我们这些知道diff -b 的人不在乎。
猜你喜欢
  • 1970-01-01
  • 2013-06-12
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
相关资源
最近更新 更多