Java
Mavenで差分コンパイルできない
常に
[INFO] Changes detected - recompiling the module!
というメッセージが出て全コンパイルが行われる事象。
false を設定することで、本来この機能に期待されている 賢い
インクリメンタルコンパイルが行われなくなる。
(この賢いインクリメンタルコンパイル機能がバグっているため、全ファイル変更されたと見なされているのが現状。)
上記設定をfalseにすると、代わりに 通常の インクリメンタルコンパイルが行われる。 この結果、大半の場合にはfalseにした方がコンパイル時間は短縮される。
ただし、後者の 通常の インクリメンタルコンパイルは、ファイル間の依存関係などを考慮しない(、のだと思われる)。 そのため、おそらく、変更したファイルのみが再コンパイル対象となり、例えば他ファイルが使用しているインタフェースが変わった場合、使用側は再コンパイルされないため実行時エラーになる(と思われる)。
-
常に再コンパイルが走るよりはまし。上記のような場合には手動でcleanすればよい。
-
CI環境ではcleanからビルドを始めるので影響はない。
lombok install
`java -jar lombok.jar`だとMacのEclipse Neonにインストールできなかった。手動インストールが必要。
lombok.jarを所定の場所に配置:
mv lombok.jar Eclipse.app/Contents/MacOS/
Eclipse.app/Contents/Eclipse/eclipse.ini`に-vmargs`セクションがあるので、そこにの行を追記:
-Xbootclasspath/a:lombok.jar -javaagent:lombok.jar
Maven POM
Javaバージョン指定
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.source>11</maven.compiler.source>
formatter
formatter-maven-pluginを利用する。
<build>
<plugins>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>2.8.1</version>
<configuration>
<compilerCompliance>${java.version}</compilerCompliance>
<compilerSource>${java.version}</compilerSource>
<compilerTargetPlatform>${java.version}</compilerTargetPlatform>
<configFile>https://raw.githubusercontent.com/yukihane/prefs/master/eclipse/java-format-setting.xml</configFile>
<lineEnding>LF</lineEnding>
<skipCssFormatting>true</skipCssFormatting>
<skipHtmlFormatting>true</skipHtmlFormatting>
<skipJavaFormatting>false</skipJavaFormatting>
<skipJsFormatting>true</skipJsFormatting>
<skipJsonFormatting>true</skipJsonFormatting>
<skipXmlFormatting>false</skipXmlFormatting>
</configuration>
<executions>
<execution>
<goals>
<goal>format</goal>
</goals>
</execution>
</executions>
</plugin>
Apache POI
xlsxファイルを操作したい場合は`poi-ooxml`を追加すれば残りの必要なものは依存関係で自動で入る。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16-beta2</version>
</dependency>
slf4j
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.23</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.23</version> </dependency>
lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.14</version>
</dependency>