Created
July 11, 2018 04:53
-
-
Save noriyukitakei/5e9350698f59237899dc8819508b8b4c to your computer and use it in GitHub Desktop.
多分わかりやすいマイクロサービス入門 〜 マイクロサービスフレームワーク「Azure Service Fabric」でLINE風なチャットアプリを作ろう!! 〜
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apply plugin: 'java' | |
apply plugin: 'eclipse' | |
sourceSets { | |
main { | |
// ソースのディレクトリを指定します。 | |
java.srcDirs = ['src'] | |
// コンパイルしたクラスの出力先を指定します。 | |
output.classesDir = 'out/classes' | |
resources { | |
// リソースファイルのディレクトリを指定します。 | |
srcDirs = ['src'] | |
} | |
} | |
} | |
clean.doFirst { | |
// コンパイルやビルドする前に一番最初に実行されるお掃除です。 | |
delete "${projectDir}/../lib" | |
delete "${projectDir}/out" | |
delete "${projectDir}/../ChatApplication/ChatWebPkg/Code/lib" | |
delete "${projectDir}/../ChatApplication/ChatWebPkg/Code/ChatWeb.jar" | |
} | |
repositories { | |
// 依存ライブラリのダウンロード先としてMaven Central Repositoryを定義します。 | |
mavenCentral() | |
} | |
dependencies { | |
// Azure Servie Fabricのライブラリをダウンロードします。 | |
compile ('com.microsoft.servicefabric:sf-actors:1.0.0') | |
// ChatRPCプロジェクトを参照します。ChatRPCプロジェクトはRPCのインターフェースや | |
// メッセージを格納するJavaBeanを定義していますので、全てのプロジェクトから | |
// 参照可能にする必要があります。 | |
compile project(':ChatRPC') | |
} | |
task explodeDeps(type: Copy, dependsOn:configurations.compile) { task -> | |
// 依存ライブラリの中から、nativeという文字列を含まないものは、そのまま、 | |
// Chat/libディレクトリにコピーし、nativeという文字列を含むものは、 | |
// 解凍してコピーします。 | |
// そして、コピー対象は、lib*.soと*.jarに絞ります。 | |
configurations.compile.filter {!it.toString().contains("native")}.each{ | |
from it | |
} | |
configurations.compile.filter {it.toString().contains("native")}.each{ | |
from zipTree(it) | |
} | |
into "../lib/" | |
include "lib*.so", "*.jar" | |
} | |
task copyDeps<< { | |
copy { | |
// Chat/libディレクトリにある依存ライブラリを | |
// Chat/ChatApplication/ChatWebPkg/Code/libにコピーします。 | |
// ただし、コピー対象はlib*.soのみとします。 | |
from("../lib/") | |
into("../ChatApplication/ChatWebPkg/Code/lib") | |
include('lib*.so') | |
} | |
} | |
// コンパイルする前にexplodeDepsタスクを呼ぶ設定です。 | |
compileJava.dependsOn(explodeDeps) | |
jar { | |
// jarに含めるライブラリを指定しています。nativeという文字列を含まないディレクトリの場合はそのまま、 | |
// それ以外のものは解凍して展開した状態でjarに含めます。 | |
from configurations.compile.collect {(it.isDirectory() && !it.getName().contains("native")) ? it : zipTree(it)} | |
manifest { | |
// メインメソッドがあるクラスを指定します。 | |
attributes( | |
'Main-Class': 'statelessservice.ChatWebHost') | |
// jarのファイル名を指定します。この場合、ChatWeb.jarという名前のファイルが出来上がります。 | |
baseName "ChatWeb" | |
// jarの出力先を指定します。Chat/ChatApplication/ChatWebPkg/CodeにChatWeb.jarが出力されます。 | |
destinationDir = file('../ChatApplication/ChatWebPkg/Code/') | |
} | |
// 下記に指定してあるファイルはjarには含めない指定です。 | |
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA' | |
} | |
// タスクを指定しなかった場合、以下の順番でタスクが実行されます。 | |
defaultTasks 'clean', 'jar', 'copyDeps' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment