EmacsとEclimの開発環境ができたので、Spring Boot
のHello World
を作ってみます。
Eclimを使うとEmacsからEclipseに接続してサブセットの機能が使えます。Eclipseと連携したMavenも実行できるのでGUI環境でなくてもJavaの開発ができます。
Spring Boot入門ハンズオンをテキストにしてモダンなJavaのWebアプリを学習していこうと思います。
Docker開発環境
JavaのDocker開発環境にSSH接続します。
$ docker run --name eclim -d -i -t masato/eclim $ docker inspect --format="{{ .NetworkSettings.IPAddress }}" eclim 172.17.0.211 $ ssh docker@172.17.0.211
|
eclimd を起動
コンテナに接続したら、eclimdを起動します。
$ DISPLAY=:1 ./eclipse/eclimd -b
|
Mavenアーキタイプ
$ mvn -B archetype:generate \ -DgroupId=com.example \ -DartifactId=jsug-helloworld \ -Dversion=1.0.0-SNAPSHOT \ -DarchetypeArtifactId=maven-archetype-quickstart
|
Eclipseの設定ファイルを作成
Eclipseと連携するための設定ファイルを作成します。
$ cd jsug-helloworld $ mvn eclipse:eclipse
|
emacs-eclim
Emacsを起動してMavenアーキタイプで作成したプロジェクトをインポートします。
$ emacs M-x eclim-project-import Project Directory: ~/jsug-helloworld/ Imported project 'jsug-helloworld'. M-x eclim-project-mode | open | jsug-helloworld | /home/docker/jsug-helloworld
|
pom.xml
pom.xmlを編集します。parent,dependencies,pluginsを追記します。
~/jsug-helloworld/pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>jsug-helloworld</artifactId> <packaging>jar</packaging> <version>1.0.0-SNAPSHOT</version> <name>jsug-helloworld</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.1.7.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <properties> <java.version>1.7</java.version> </properties> </project>
|
Mavenのtestゴールを実行します。
M-x eclim-maven-run Goal: test Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.979s [INFO] Finished at: Sat Oct 04 10:55:35 UTC 2014 [INFO] Final Memory: 11M/216M [INFO] ------------------------------------------------------------------------ Compilation finished at Sat Oct 4 19:55:35
|
App.java
App.javaを編集してmainメソッドでSpringApplicationを実行できるようにします。
~/jsug-helloworld/src/main/java/com/example/App.javapackage com.example;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;
@RestController @EnableAutoConfiguration public class App { @RequestMapping("/") String home() { return "Hello World!"; } public static void main( String[] args ) { SpringApplication.run(App.class,args); } }
|
mvn spring-boot:run
Mavenのspring-boot:run
ゴールを実行します。Eclimからだと見づらくなるので、シェルから実行します。組み込みのTomcatが起動しました。
$ mvn spring-boot:run ... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.1.7.RELEASE) ... 2014-10-04 12:37:38.339 INFO 3824 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080/http 2014-10-04 12:37:38.341 INFO 3824 --- [ main] com.example.App : Started App in 3.215 seconds (JVM running for 3.543)
|
確認
DockerホストからコンテナのTomcatに接続して確認します。
$ curl 172.17.0.211:8080 Hello World!
|