Skip to content

Instantly share code, notes, and snippets.

@noriyukitakei
Created July 11, 2018 04:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save noriyukitakei/5e9350698f59237899dc8819508b8b4c to your computer and use it in GitHub Desktop.
Save noriyukitakei/5e9350698f59237899dc8819508b8b4c to your computer and use it in GitHub Desktop.
多分わかりやすいマイクロサービス入門 〜 マイクロサービスフレームワーク「Azure Service Fabric」でLINE風なチャットアプリを作ろう!! 〜
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