ひまlab

ひまな時になんか書く。

Maven3で、GlassFish3を使ってみる

Oracle OpenWorld 2012で熱く語られていた「GlassFish」を使ってみる。
ただ使うのもあれなので、前から気になってたMaven3と組み合わせてスムーズな開発をしてみよう!
コンセプトは、簡単でクリーンな開発。

環境

  • OS: Windows 7(64bit)
  • APサーバ: GlassFish3.1.2
  • 管理ツール: maven 3.0.4
  • JDK: jdk1.6.0_29

準備(インストール)

GlassFish

  1. ここからダウンロード
    • インストーラ版でもいいけど、zip版を使用
  2. 解凍し、適当な場所に配置
  3. glassfish3\binにPATHを通す
  4. glassfish3\bin\asadminをリネーム(asadmin_bkなど)*1
    • asadmin.batはそのまま

maven

  1. ここからダウンロード
  2. 解凍し、適当な場所に配置
  3. apache-maven-3.0.4\binにPATHを通す
  4. プロキシ環境の人は、apache-maven-3.0.4\conf\settings.xmlをコメントアウト解除し、編集する。
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

JDK

  1. ダウンロードして、インストール
  2. インストール先をJAVA_HOMEに指定
  3. JAVA_HOEM\binにPATHを通す

GlassFishのドメイン作成

 > asadmin.bat create-domain my_domain
    • ユーザ名とパスワードを聞かれるので、入力する
      • ちなみに、これをやらなくても最初から「domain1」というドメインが作られています。
  • 確認
 > ./asadmin.bat list-domains
    • my_domainが出れば成功。

Mavenプロジェクトの作成

  • コマンドプロンプト立ちあげて、プロジェクトを作成したいディレクトリに移動する。
    • 例では、「C:\project」に作成する。
 > cd C:\project
  • mvnコマンドを実行し、プロジェクトを作成
    • webアプリを作成するために、archetypeArtifactIdに「maven-archetype-webapp」を指定する
    • groupIdはプロジェクトの階層、artifactIdはプロジェクトの識別子になる
 > mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=com.example -DartifactId=MyMavenApp
    • versionとパッケージを聞かれるが、デフォルト設定を選ぶためEnterを押す。
  • MyMavenAppディレクトリが作成される。
    • pom.xmlがあることを確認。
      • pom.xmlは、mavenプロジェクトに関する情報を記述するためのファイルです。
 > dir MyMavenApp
   pom.xml  src

GlassFishと連携

  • 作成したMyMavenAppをGlassFishにデプロイするための設定を行う
  • 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>MyMavenApp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MyMavenApp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>MyMavenApp</finalName>
  </build>
</project>
<!-- 編集後 -->
<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>MyMavenApp</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>MyMavenApp Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>MyMavenApp</finalName>
    <plugins>
      <plugin>
        <groupId>org.glassfish.maven.plugin</groupId>
        <artifactId>maven-glassfish-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <!-- ドメイン作成時に指定したユーザ -->
          <user>admin</user>
          <!-- GlassFishのインストール先 -->
          <glassfishDirectory>C:/app/glassfish3</glassfishDirectory>
          <!-- ドメイン作成時に指定したパスワード -->
          <adminPassword>admin</adminPassword>
          <debug>true</debug>
          <echo>true</echo>
          <components>
          <component>
          <name>${project.artifactId}</name>
          <artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
          </component>
          </components>
          <domain>
            <name>my_domain</name>
            <adminPort>4848</adminPort>
          </domain>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
  • my_domainを起動する
 > asadmin.bat start-domains my_domain
  • my_domainにMyMavenAppをデプロイする
 > cd C:\project\MyMavenApp
 > mvn war:war glassfish:deploy
  • MyMavenAppにアクセス
    • プラウザを起動し、URLを入力
 http://localhost:8080/MyMavenApp/

f:id:kanjin:20120421105708p:plain

これで、開発の準備が整いました。

終わり

*1:これをやらないとmaven3のバグ?で連携がうまくできない http://stackoverflow.com/questions/6525979/maven-glass-fish-plug-in-problem