使用M2E

时间:2016-01-04 12:45:36

标签: eclipse maven m2eclipse checkstyle

我想配置完全自动我的代码格式化程序,关于已经外部化的配置。它的工作方式几乎...... 但不完全:Eclipse Formatter中至少没有反映制表符。

配置

工具

我已经使用了以下工具和插件

结构

这是一个深度多模块分层项目。主要思想是checkstyle配置是外部化的(在fmk-qa中)并且在fmk-core中被称为依赖。

fmk-parent
|-- fmk-core
|   |-- fmk-front
|   |   |-- front-sub1
|   |   |-- front-sub2
|   |   |-- ...
|   |   `-- pom.xml
|   |-- fmk-back
|   |   |-- back-sub1
|   |   |-- back-sub2
|   |   |-- ...
|   |   `-- pom.xml
|   |-- fmk-commons
|   |   `-- pom.xml
|   `-- pom.xml
`-- fmk-qa
    |-- pom.xml
    `-- checkstyle-config.xml

配置

Maven父配置

[...]

<build>
    <pluginManagement>
        <plugins>
        <!-- Checkstyle Dependency where configuration is externalized  -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.17</version>
                <dependencies>
                    <dependency>
                        <groupId>corp.framework</groupId>
                        <artifactId>fmk-qa</artifactId>
                        <version>${project.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            [...]
        <plugins>
    <pluginManagement>

核心项目配置

<build>

<plugins>

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>

        <configuration>
            <configLocation>checkstyle-config.xml</configLocation>
        </configuration>

        <!-- Binding to indicate to M2E that it should trigger analysis in Eclipse -->
        <executions>
            <execution>
                <id>validate</id>
                <phase>validate</phase>
                <configuration>
                    <configLocation>checkstyle-config.xml</configLocation>
                    <failsOnError>false</failsOnError>
                    <linkXRef>true</linkXRef>
                </configuration>
                <goals>
                    <goal>check</goal>
                </goals>
            </execution>
        </executions>

        <inherited>true</inherited>
    </plugin>

Checkstyle配置

<module name = "Checker">
[...]
<!-- Checks for whitespace                               -->
<!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="FileTabCharacter">
        <property name="eachLine" value="true"/>
    </module>
    [...]
</module>

到目前为止有效

Eclipse自动检测大量事物并配置它们,这就是

  • 在导入期间将CheckstyleNature添加到项目中(感谢m2e和良好的maven绑定)
  • 触发检查风格分析
  • 直接在Java编辑器中报告错误
  • 当我触发格式化时,
  • 格式化代码......几乎就像我想要的那样

(这也适用于PMD和FindBugs)。

什么不起作用

当我尝试自动格式化代码(CTRL + SHIFT + F)时,它会格式化代码,但用制表符替换空格,这显然不是我想要的。

我怎样才能告诉自动 eclipse如何正确实现

我显然不想让开发人员单独配置它。 此外,我知道我可以手动生成基于Checkstyle配置(How to generate an Eclipse formatter configuration from a checkstyle configuration?)的代码格式化程序。所以我希望它可以通过插件自动实现。

欢迎所有建议,即使是预先设置的工作空间分布&#34;,甚至我也希望找到更复杂的解决方案。我也准备好了(这可能是我自己的答案):它还不可能,自己做,为社区做贡献;)

1 个答案:

答案 0 :(得分:1)

没有开箱即用。因此,您最好的选择是向m2e-code-quality Plugin提交增强请求,以便在Eclipse M2Eclipse's project configurator中导入或更新项目时生成Eclipse格式化程序配置。