MavenからEclipseのProject Facetをカスタマイズする
Mavenを使用していて「mvn eclipse:eclipse」を実行したときに、Eclipeの「Project Facets」が、自分の意図したとおりにできない場合がある。
特に「Dnynamic Web Modules」のバージョンを3.0に指定したい場合。
Eclipseの画面上からは、プロジェクトの「Properties」―「Project Facets」から設定できる。
この設定は、ファイルとしては、「.setting/org.eclipse.wst.common.project.facet.core.xml」で保持されている。
<faceted-project> <fixed facet="jst.java"/> <fixed facet="jst.web"/> <installed facet="jst.java" version="1.7"/> <installed facet="jst.web" version="3.0"/> </faceted-project>
この「org.eclipse.wst.common.project.facet.core.xml」ファイルを書き換える方法は、mavenc eclipse pluginの設定を変更する。設定方法は2つある。
方法(1):差分の情報を追加する
pom.xmlの
このタグの中に、追加したい情報を任意のタグ名で記載する。
「
↓のサイトに記載されている。
Apache Maven Eclipse Plugin - Additional Facets
<plugin> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <additionalProjectFacets> <jst.jsf>1.1<jst.jsf> <jst.ejb.xdoclet>1.2.3</jst.ejb.xdoclet> <jst.web.xdoclet>1.2.3</jst.web.xdoclet> </additionalProjectFacets> </configuration> </plugin>
ただし、この方法は、標準で設定されていないものを指定する際に有効。
標準とは、Java、Webのことをいう。
Javaのバージョンは、maven compiler pluginで指定可能だが、webの場合はこの方法ではうまくいかない。
方法(2):ファイルの内容を直接指定する
「org.eclipse.wst.common.project.facet.core.xml」ファイルを直接設定する方法がある。
↓のサイトに例が載っている。
WTP Eclipse project generation from Maven configuration | Jrialland's Blog
<properties> <java.version>1.7</java.version> <servlet-api.version>3.0</servlet-api.version> <properties> <plugins> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <configuration> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> <wtpversion>2.0</wtpversion> <!-- ファイルの中身を直接指定する --> <additionalConfig> <file> <name>.settings/org.eclipse.wst.common.project.facet.core.xml</name> <content><![CDATA[ <faceted-project> <fixed facet="jst.java"/> <fixed facet="jst.web"/> <installed facet="jst.java" version="${java.version}"/> <installed facet="jst.web" version="${servlet-api.version}"/> </faceted-project> ]]></content> </file> </additionalConfig> </configuration> </plugin> </plugins>
ここまでするくらいなば、Eclipseの画面から設定した方がよい場合もあるが、できるだけ自動化したい人は設定するとよいかも。
Gradleが使用できるならば、プログラムがけるため、ファイルの中身を文字列置換した方が早いと思う。