はじめてのSpring Boot
今日読もうと思ってたのに、持ってくるの忘れた(ノД`)シクシク
明日読もっと。ざっくり読んでみた感想は、こんなです↓
「はじめてのSpring Boot」読んでる。これ、Spring Bootがどうこうってより、まきさんと一緒にWebアプリ作ってる感じが勉強になりすぎる。 #hajiboot
— Elastic bufferings (@bufferings) 2015, 7月 10
で、詳細はこんなです↓ #他力
親ポム
maven使うときって、最初に色々やることが面倒で。
プラグイン考えたり、バージョンの組み合わせを考えたり。
あ、こっちのライブラリはSpring3.x使ってるのにこっちはSpring4.x依存だわ。とか。
Spring Bootでは、そのあたりを親ポムにまとめてくれてるので、楽そう。
という感じで、pom.xmlがキーポイントのひとつっぽいよね。気になるね。読んでみよう。
spring-boot-starter-parent
spring-boot/pom.xml at v1.3.0.M2 · spring-projects/spring-boot · GitHub
grand parent
あ、まだ親がおった。
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.3.0.M2</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent>
おじいちゃんポムか。とりあえず先に進もう。
properties
<properties> <java.version>1.6</java.version> <resource.delimiter>@</resource.delimiter> <!-- delimiter that doesn't clash with Spring ${} placeholders --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> </properties>
Javaのバージョンとか、エンコーディングはいいとして。delimiterってなんだっけこれ?
resource.delimiterプロパティは、こんな風に使ってて↓
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> <configuration> <delimiters> <delimiter>${resource.delimiter}</delimiter> </delimiters> </configuration> </plugin>
で、ググったら
Apache Maven Resources Plugin - resources:resources
Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form 'beginToken*endToken'. If no '*' is given, the delimiter is assumed to be the same for start and end. So, the default filtering delimiters might be specified as: <delimiters> <delimiter>${*}</delimiter> <delimiter>@</delimiter> </delimiters> Since the '@' delimiter is the same on both ends, we don't need to specify '@*@' (though we can).
ってことで、Springの"${}"とぶつからないように"@*@"を定義してるってことなのかな。
もうちょいググったら、まさにこれってのが見つかった。まだ理解してない。
後で読むとして先に進もう。
あれ、ちょっとまてよ、maven-resources-pluginってなんだったか忘れた。
リソースをコピーするときにフィルタリングONにしてたら置換してくれるんだったっけか?
合わせて後で調べよっと。
spring-core
spring-coreから、commons-loggingを取り除く。SLF4JでLogback使ってるなら、commons-logging要らないからね。
って、じいちゃんpomではやってないのかな?
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> </dependencies> </dependencyManagement>
maven-jar-plugin
Jarに固めるやつなんだろうね。
start-classってのがエントリーポイントなんだろうね。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>${start-class}</mainClass> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> </archive> </configuration> </plugin>
maven-war-plugin
こっちはwar。failOnMissingWebXmlがオフになってる。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> <archive> <manifest> <mainClass>${start-class}</mainClass> <addDefaultImplementationEntries>true</addDefaultImplementationEntries> </manifest> </archive> </configuration> </plugin>
ギャー、もう出社しなければ!
exec-maven-plugin
なんだこれは?
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <configuration> <mainClass>${start-class}</mainClass> </configuration> </plugin>
git-commit-id-plugin
なにこのプラグイン?
<plugin> <groupId>pl.project13.maven</groupId> <artifactId>git-commit-id-plugin</artifactId> <version>2.1.11</version> <executions> <execution> <goals> <goal>revision</goal> </goals> </execution> </executions> <configuration> <verbose>true</verbose> <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat> <generateGitPropertiesFile>true</generateGitPropertiesFile> <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename> </configuration> </plugin>
spring-boot-maven-plugin
bootのプラグイン。何するんだろうなー?
<!-- Support our own plugin --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> <configuration> <mainClass>${start-class}</mainClass> </configuration> </plugin>