ラベル Maven の投稿を表示しています。 すべての投稿を表示
ラベル Maven の投稿を表示しています。 すべての投稿を表示

2012年7月18日水曜日

Gradle カスタムプラグイン作ってみた

あ゛ぢ゛い゛

みけです。

某java-jaのイベントにて




ということが話題に上がったので、

そういえば作っていないな(白目

って、ことで、いつも面倒な.gitignoreファイルを

Gradleのプラグインから類推して作り出す

プラグインを作ろうと思った。


参考サイト


参考サイトといえば、@bluepapa32さんのブログがとにかく秀逸!

プロパティファイルを native2ascii するためのプラグインを作ってみた

Gradle のカスタムプラグインを JAR ファイルで公開する方法

これと後は、gradle-gae-pluginのgithubを参考にしました。


build.gradle


build.gradleはこんな感じ。




coreというモジュールのdependencyに、gradleApi()とあります。

こいつが、カスタムプラグインを作る時のミソです。


プラグインの本体はcore/src/main/groovy/og/mikeneck/gradle/git/GitIgnorePlugin.groovyというファイルになります。



このコードのproject.task('git-ignore')という部分によって、

タスクgit-ignoreというタスクが作成されます。

あと、プラグインの名前ですが、core/src/main/resources/META-INF/gradle-plugins/gitignore.propertiesというファイルの

ファイル名でプラグイン名が決定されます。

この場合だと、
apply plugin : 'gitignore'

で、利用することができます。


勉強会


まあ、このあたりのことは明日(2012/07/19)の勉強会にて話します。


目標


大したプラグインではありませんが、

Sonatype OSS Maven Repositoryに載せたいと思います。


2012年3月3日土曜日

Gradle + Groovy + Ideaをやってみよう

簡単なGradleのbuild.gradleファイルを作成してみた。

ビルドスクリプト


このbuildスクリプトはGoogle-guiceとh2データベースとjunitを入れるだけの簡単なプロジェクト。



読めば大体わかりますね。
javaとgroovyを使って、IntelliJ IDEAで開発できて、jarを最終的に吐き出すプロジェクトです。

GradleをMavenと比較して残念なところに、generate-archetypeみたいに、いい感じのディレクトリツリーを作ってくれるコマンドがないので、
とりあえず、ideaタスクの後に自作して強引に作るようにしています。


Tasks


Gradleでどのようなタスクがあるかを一覧表示します。



gradle tasksというコマンドがそれです。


プロジェクトの作成


では、ideaプロジェクトを作成しましょう。




gradle ideaコマンドとgradle structureコマンドを打つことでプロジェクトの構造が出来上がります。

実際にはideaタスクの後にstructureタスクを割りこませる方法があるんですが、忘れた…orz


プロジェクトの取り込み


では、作成したプロジェクトをideaで取り込みます。


Open Projectを選択します。

先程作成したgradle-study2.iprファイルを選択します。



こんな感じに依存性を解決したideaプロジェクトが作成されます。



GroovyでJUnit


JUnit4はPOJOまたはPOGOでできるので、GroovyでもJUnit4のテストを書けます。

では早速やってみましょう。

パッケージ作り忘れたので、src/test/groovyディレクトリで、[Alt + Insert]を押します。(MacではCtrl + n)




ここで「pa…」と入力すると、packageが選択できます。


適当にパッケージ名を入れましょう。



パッケージができたら、作成したパッケージのところでまたもや[Alt + Insert]。(MacではCtrl + n)

GroovyClassを選択します。



適当なので適当にクラス名を入れます。



早速、@Beforeから書いて行きましょう。



IDEAの素晴らしいところは、あの忌々しい[Ctrl + Space]を入れなくてもどんどん補完してくれる所




さらには依存性が解決している範囲で、あの忌々しい[Ctrl + 1]を入力しなくても、[Alt + Enter]で勝手にimport文を作ってくれるあたり。


なんか適当にlistとかいうフィールド、インスタンスを作ってみましたが、
これはフィールドとして設定しましょう。

listが初出の場所にカーソルを当てて、[Ctrl + Alt + f]、(Macの場合は[コマンド + alt + f])

でいい感じにフィールドを作成してくれます。



適度にスコープを選択して、defで割り当てましょう。


おもむろにテストを書いてみましょうか。

なんか、何もしていないのにアノテーションですら自動補完してくれます。



JUnit4をJavaでやるときはもちろん、org.junit.Assert.assertThatあたりを用いますが、
Groovyでテストをするときは、そんなもん使いません。

assertだけで十分です。


テストわざと間違えていますが…

テストを実行するのは、[alt + shift + F10]です。

何のテストを実行したいか選択して下さい。

メソッド単位で実行できます。



さて、実行結果です。
もちろんテスト間違えているので、どうなるか気になりますね。

テスト実行結果。



何がどういう値で、何が間違っているかがちゃんと表示されるんです。

これはGroovyだからできるんです。Power Assertと言います。

これはGroovyだからできるんです。Power Assertと言います。

大事な事ですから二度言いました。

これはGroovyだからできるんです。Power Assertと言います。


これがJUnitのassertThatなどだったら、expected<4> but got <3> くらいしか出してくれません。


この親切さ。これはGroovyだからできるんです。Power Assertと言います。


こいつはテストを直しておきます。



POJOのテスト


POJOもテストしましょう。もちろんテストはGroovyでやっちゃいます。


とりあえず、誰でも思いつきそうなPOJOでPersonというクラスを作ります。


メンバーはintのageとStringのfirstNameとlastNameです。

getterとsetter作らないとですね。


何もない所で、[alt + insert]を押します。(Mac版ちょっとど忘れ)



とりあえず、メンバー全部選択しましょう。



まあ、このあたりはeclipseでもやれるので、どうということはないですね。



じゃあ、テストを書きましょう。もちろんGroovyで。

Groovyでは特にコンストラクターが指定されていなければ、内部のフィールドに値を一気に代入させることができます。



ほんまかいな?と思うので、assertをかけてみましょう。




さ、テストを実行しましょう。


ほれ、ノープロブレム!!!!



Gradleに戻って


とりあえず、テストを落ちるようにしておきます。




では、gradleでテストを実行します。

テスト実行結果




さて、テストが2つコケたらしいですね。

では結果をhtmlファイルで見てみます。

これがレポートファイルです。


これらの詳細を見ることができます。




ちゃんとテストがどういう点が悪くてfailしたのか一目瞭然ですね。

というわけで、Gradle、あの複雑なpomを書かなくても、いい感じで、ココまでやってくれるのですから、今はAnt + Ivyだけどという人は是非トライしてみましょう。


2012年2月25日土曜日

Gradle、ちょっと面倒な所

どうも。

ビルドツールではGradleを一押ししているのですが、
まだまだ開発中故に残念なところがあるので、
そのメモです。

Dependencyの指定にGStringが使えない




プロジェクトの依存ライブラリーを指定するときに、
同じGroupIdで同じバージョンを使うときに、
プロパティを設けておいて、
それを利用する方がのちのち便利です。

Groovyの場合、文字を展開するのに便利なGStringクラスがあり、
変数を置き換える際にそれを利用します。

というわけで、dependencyの指定にはGStringを利用したいわけです。



上記のbuild.gradleでは、
GAEのバージョンやSlim3のバージョンをプロパティに設定して利用しているわけですが、
こんな感じのエラーが発生します。



GStringStringにキャストできないということらしいです。

対策


仕方が無いので、カッコ悪いですが、toString()メソッドを利用します。



これはソースを読んで、パッチでも送りましょうかね…

Windowsでの問題


Macなら多分問題はないと思いますが、
Windowsでやっていると、
文字コードの問題が出てきます。

これについては、@nobeansさん『豆無日記』「Gradleで文字エンコーディングを指定する方法」に詳しく書かれています。

先ほどのbuild.gradleでWindowsでコンパイルする場合、こんなエラーが出ます(コードページは932、ソースはUTF-8)。



@nobeansさんのページに書かれたとおりに修正するとこんな感じのbuild.gradleファイルになります。



これで、なんとかうまく走りました。



ココらへんは、今年中にmilestoneが30くらいまでになるというGradleですので、対策してくれるんじゃないかななどと勝手に期待してみたり…


追記:2012/02/25 8:45

@orange_cloverさんからアドバイスがあったページ
『設計と実装の狭間で。』の「[Gradle]Gradleで文字エンコーディングを指定する方法」に書いてあった方法でも
エンコーディングの指定が可能なようです。



ところが、ひとつだけ残念なところが…



IntelliJ IDEAの10.5だとエラーになってしまうんですよね…

もちろん実行できますが…


2012年2月22日水曜日

MavenからGradleに移行するただひとつの理由

MavenかGradleか?

この前の日曜日、MavenかGradleかといった論争がTLを賑わしていました。


Gradleがいいよとか、Mavenがいいよとか、Ivyだよとか、sbtだよとか、やっぱここは老舗のAntだとか…

Gradle一押しのオレの意見


MavenからGradleへ移行するたった一つの理由










それは











特にない




Mavenでちゃんとビルドができているプロジェクト、それでいいんじゃない。
それで顧客に価値が提供できているという時点で、Mavenは大きな貢献をしていると思います。

Gradleでビルドができているプロジェクト、それでいいんじゃない。
SpringとかHibernateなんかがそうです。
それで顧客に価値が提供できているという時点で、Gradleは大きな貢献をしていると思います。

だから、そういうプロジェクトがMavenからGradleへ無理に移行することもとくにないと思うし、GradleからMavenへも然り。

Mavenのpom.xml読みづらいけど、IntelliJ IDEAで読めば、結構読める。
そもそもpom.xmlわかりづらいっていう問題は、数カ月努力すれば読めるようになる。
これはオレの経験則から。
Antのbuild.xmlよりはわかりやすいですよ。pom.xml。


GradleやMavenを本当に導入するべきプロジェクトというのは、

開発者各自がjarとかzipとかをダウンロードしたり、特定の端末でないと商用ビルドができないとか、特定の担当者がいないとビルドができないとかそういう属人的、属端末的、個々人がバラバラ的なプロジェクト、そういうプロジェクトにこそ導入するべきだと思うわけです。

その意味で、
@ikeike443さんのツイート「ライブラリを探すのに未だにGoogleで検索して適当に見つかったものを手でダウンロードして、依存関係は手と目で一生懸命さがして解決して、みたいにやってる方いるもんなあ。プロダクションではまたバージョンの違う組み合わせのライブラリを使ってて動かないみたいな。」が最も的を得ていると思いました。


というわけで、多分世の中にたくさんあるであろう各自が勝手にライブラリーを落としてきて自分とこだけうまくいくようなプロジェクトにこそ、Mavenは導入してもらいたいし、Gradleは導入してもらいたい。

2012年2月19日日曜日

久々にAppEngineをやってみた。

まあ、以前も小川さんの『Slim3』本を写経していましたが、かなり忘れていたっていうのもあるので、写経しました。

だいぶAppEngineのバージョンも上がっており、
色々と気になるところはありますが、
まだまだ情弱なオレのことですので、
基本をもう一回みっちりと叩きこんでおきたいと思います。

使用した環境は以下のとおりです。

  • IDE : IntelliJ IDEA 10.5
  • Google AppEngine 1.6.2.1
  • Slim3 1.0.15
  • maven 3.0.4
  • gradle-milestone-8

一応必要そうな依存性はpom.xmlで集めましたが、
ここは、小川さん、わかめが嫌いそうなGradleでやって見ることにします。

なお、今回はテストはChapter5-Section3-example1のコードを少し改造してやっています。

まずは、pom.xml



長いです。

pom.xml情弱のオレには辛かったです。
この編は小川さんのサポートがないと生きていけません。

これをbuild.gradleで書きなおしてみました。



テストコードはこんな感じです。



Gradleでの実行結果はこんな感じです。



mavenでの実行結果はこんな感じです。




maven情弱のオレにはmavenは敷居が高すぎましたorz


2012年2月3日金曜日

JavaFX初心者がJavaFXに挑戦してみた

JavaFXに興味はなかったんですが…

javascriptのテストをJUnitから実行できるんでね?


こんなことをつい言ってみてしまったので、まあJavaFX触ってみることにしました。

準備


  • Java 1.7.0_02
  • IntelliJ IDEA … version10です。すみません。
  • Maven3.0.4
  • JavaFX2.0


とりあえず、Java7使っています。Java1.6系でも動くらしいです。

家でのコーディングにはほとんどeclipseを使いません。IntelliJです。

試しにmvnコマンド叩いたら、バージョンが2.2.1というひどい状態だったので、最新の3.0.4を入れました。

JavaFX2.0インストールした記憶がないのに、インストーラーを起動するとすでにインストールされている旨エラーメッセージが表示されて、なんでだろうとC:\Program Files\Javaの中を漁っていましたが、結局、見つからず(´・ω・`)して、32bit版をダウンロードしてインストールし…

っていう時に、インストール先がC:\Program Files\Oracleということを知り、探したらありました。


artifactId…


さて、ビルド周りをきっちりやりたいので、mavenでプロジェクトを作ります。

単純にIntelliJでCreate new Project from Scratchして、maven moduleを選択しただけですが…

さて、javafxもmavenからライブラリーを落としてこよっと思ってmavenrepositoryを検索したら残念なコトにartifactIdがございませんでした。

さて、こういう場合はローカルにあるjarをローカルリポジトリーに登録するらしいです。
特にOracleのプロダクトに関してそういうことが多いようです。


というわけで我々もやってみました。


C:\>workspace\JavaFxWebView > mvn install:install-file -Dfile=jfxrt.jar -DgroupId=javafx -DartifactId=javafx -Dversion=2.0 -Dpackaging=jar


それをpom.xmlに指定して、ってな感じでやると見事!プロジェクトに取り込まれました。


pom.xml




2012/02/04 2:50 修正


DLL地獄!?


ここを参考に超シンプルな実装をしてみました。





Creative Commons License
MikeBrowser by Shinya Mochida a.k.a. mike_neck is licensed under a Creative Commons Attribution 3.0 Unported License.

(∩´∀`)∩ワーイということで、早速コンパイル。


C:\>workspace\JavaFxWebView > mvn clean compile




コンパイル通りました。

では早速実行しましょう。


C:\>workspace\JavaFxWebView > mvn exec:java -Dexec.mainClass="org.mikeneck.jfx.MikeBrowser"




Σ(゚д゚lll)ガーン落ちたー。



C:\Users\mike\.m2\repository\javafx\javafx\bin\mat.dll



mat.dllがないらしい。

まあでもブラウザーを持っていたりするんだから、そうなるよね。

さて、このmat.dllくんはどこにいるのかな?

いた!


C:\Program Files\Oracle\JavaFX 2.0 SDK\rt\binにいるそうです。

残念、これは手でローカルリポジトリーに上げるしかなさそうです。

ということで、手で突っ込んでみた。


では、気をとりなおして、再実行!

やりました!出てくれました!






2011年12月12日月曜日

恥ずかしくて今さら聞けない、GMongo講座 1

さて、昨日は恥ずかしくて今さら聞けない、mongodb講座 1などというものを書いたわけですが、今日は

恥ずかしくて今さら聞けない、GMongo講座 1


です。

みなさんお間違えのないようにお願いします。

GMongoって何ぞ?という方もいると思いますので、とりあえず、簡単に説明すると、

Groovyからmongodbにつなげるthin ドライバーです。

もっと詳しく知りたい?ググレカスりましょう。

導入

GitHubのアドレスはhttps://github.com/poiati/gmongoです。

ここからzipダウンロードしてpathを通してやってください。

なお、このライブラリーは標準のmavenリポジトリーにも登録されています。
mavenから使いたい場合は、次のように記述すると使えます。

    <dependencies>
        <dependency>
            <groupId>com.gmongo</groupId>
            <artifactId>gmongo</artifactId>
            <version>0.9.2</version>
        </dependency>
    </dependencies>


おっと、私のように頭がゆとり系の人にはmavenなんて難しいことを書いてはダメでした。

@Grapesでは次のような感じです。

@Grapes(
 @Grab(group='com.gmongo', module='gmongo', version='0.9.2')
)


Gradleでは次のような感じになります。

repositories {
    mavenCentral()
}

dependencies {
    groovy : 'com.gmongo:gmongo:0.9.2'
}


ちなみにJavaとの親和性の高いGroovyですから、Groovyで書かれたライブラリを使ってJavaで開発なんてこともできると思います(テキトー)

では、昨日と同じような感じで使ってみたいと思います。

クライアント起動インスタンス化


ホスト名とポート番号を渡してやるだけでインスタンス化できます。
MongoTest.groovy

import com.gmongo.GMongo
import org.junit.Before

    @Before
    public void setUp() {
        def mongo = new GMongo('localhost', 27017)
    }


これだけで、mongodbとの接続が完了します。

DBの選択


使うDBを選択します。

昨日のuse db名称ですね。
これはGMongoの次のメソッドを用いることで、DBインスタンスを取得できます。

MongoTest.groovy

import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB

    @Before
    public void setUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
    }


レコードの登録


SQLで言うところのinsertですね。

昨日の例では、mydb.itemsというエンティティ(?)に入れましたので、同様のコードを書きたいと思います。

まずはエンティティの取得から。

MongoTest.groovy

import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB

    @Before
    public void setUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        def entity = db['items']
    }


えっ、これだけ!?

そうなんです。これだけなんです。

さすがGroovy、Groovyかわいいよ、Groovy。

あとは、このentityにデータを入れていけば良いのです。

昨日の例ではここで登録するデータの形式はJSONでしたが、

さすがGroovy、Hashでデータを入れられます。

MongoTest.groovy

import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB

    @Before
    public void setUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        def entity = db['items']
        10.times {
            entity.insert([type : 'data', value : it])
        }
    }


さて、ではデータが登録されているかどうかテストしてみましょう。
MongoTest.groovy

import org.junit.Test
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
class MongoTest {
    @Before
    public void setUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        def entity = db['items']
        10.times {
            entity.insert([type : 'data', value : it])
        }
    }

    @Test
    public void testSetUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        def list = db.items.find()
        assert list.size() == 10
    }
}


では、テスト実行!


はい、通りました!


片付け


テストを通ったのは良いのですが、これこのままにしておくと、
後でテストこけます。

なので、テストデータを作成したら、 @Afterを使ってデータを削除しておきましょう。
MongoTest.groovy

import org.junit.Test
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
import org.junit.After

class MongoTest {
    @Before
    public void setUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        def entity = db['items']
        10.times {
            entity.insert([type : 'data', value : it])
        }
    }

    @Test
    public void testSetUp() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        def list = db.items.find()
        assert list.size() == 10
    }

    @After
    public void tearDown() {
        def mongo = new GMongo('localhost', 27017)
        def db = mongo.getDB('mydb')
        db.items.remove([:])
    }
}



ちなみに、 @Afterで実行したコマンドはmongodbにおける次のコマンドと同じです。


> db.items.remove({})
> 


はい、以上、今日はここまで。

次回はまたmongodbに戻ります。


2011年12月4日日曜日

herokuにJavaアプリをデプロイ…のはずが、mavenの勉強で終わってしまった件

herokuがJavaに対応ということで、試してみました。

結果ですが、

Mavenが全然わからないレベルなので、herokuにJavaアプリをデプロイするところで凄い時間がかかってしまった…


Herokuのガイド通りにアプリを作成して、デプロイしたところ…


[INFO] ------------------------------------------------------------------------
       [INFO] BUILD FAILURE
       [INFO] ------------------------------------------------------------------------
       [INFO] Total time: 6.396s
       [INFO] Finished at: Sun Dec 04 11:26:33 UTC 2011
       [INFO] Final Memory: 9M/490M
       [INFO] ------------------------------------------------------------------------
       [ERROR] Failed to execute goal org.codehaus.mojo:appassembler-maven-plugin:1.1:assemble (default) on project orz.mikeneck.heroku.first: A type incompatibility occured while executing org.codehaus.mojo:appassembler-maven-plugin:1.1:assemble: java.lang.String cannot be cast to org.codehaus.mojo.appassembler.Program
       [ERROR] -----------------------------------------------------
       [ERROR] realm =    plugin>org.codehaus.mojo:appassembler-maven-plugin:1.1
       [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
       [ERROR] urls[0] = file:/app/tmp/repo.git/.cache/.m2/repository/org/codehaus/mojo/appassembler-maven-plugin/1.1/appassembler-maven-plugin-1.1.jar
       [ERROR] urls[1] = file:/app/tmp/repo.git/.cache/.m2/repository/org/codehaus/mojo/appassembler/appassembler-model/1.1/appassembler-model-1.1.jar
       [ERROR] urls[2] = file:/app/tmp/repo.git/.cache/.m2/repository/net/java/dev/stax-utils/stax-utils/20060502/stax-utils-20060502.jar
       [ERROR] urls[3] = file:/app/tmp/repo.git/.cache/.m2/repository/stax/stax/1.1.1-dev/stax-1.1.1-dev.jar
       [ERROR] urls[4] = file:/app/tmp/repo.git/.cache/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.jar
       [ERROR] urls[5] = file:/app/tmp/repo.git/.cache/.m2/repository/stax/stax-api/1.0.1/stax-api-1.0.1.jar
       [ERROR] Number of foreign imports: 1
       [ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
       [ERROR] 
       [ERROR] -----------------------------------------------------
       [ERROR] -> [Help 1]
       [ERROR] 
       [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
       [ERROR] Re-run Maven using the -X switch to enable full debug logging.
       [ERROR] 
       [ERROR] For more information about the errors and possible solutions, please read the following articles:
       [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
 !     Failed to build app with Maven
 !     Heroku push rejected, failed to compile Java app


おそらくmavenをちゃんと知っている人なら、たやすく回避できるんだろうな。

で、ググっていたら同じ問題を抱えていた人のブログを発見。

herokuのガイドのmavenの記述に誤りがあるらしいです。



<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.1.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals><goal>assemble</goal></goals>
                        <configuration>
                            <assembleDirectory>target</assembleDirectory>
                            <generateRepository>false</generateRepository>
                            <programs>
                                <program>
                                    <mainClass>HelloWorld</mainClass>
                                    <name>webapp</name>
                                </program>
                            </programs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>





<build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>appassembler-maven-plugin</artifactId>
                <version>1.1.1</version>
                <configuration>
                    <assembleDirectory>target</assembleDirectory>
                    <programs>
                        <program>
                            <mainClass>orz.mikeneck.heroku.first.HerokuServer</mainClass>
                            <name>webapp</name>
                        </program>
                    </programs>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>assemble</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>


まとめると、こんな感じです。

  • mavenではコンパイラーの指定がデフォルトで1.3になっているので、1.6に変更
  • appassembler-maven-pluginの記述が微妙に間違っている