回答編集履歴

1

afterEvaluate問題解決の追加

2017/07/23 20:18

投稿

b7n
b7n

スコア30

test CHANGED
@@ -52,4 +52,70 @@
52
52
 
53
53
 
54
54
 
55
- しかし、rootProjectサブプロジェクトの依存関係が複数読み込まれるため、プラグイン同士競合してしまうのが今後の課題です。
55
+ しかし、evaluateのあとapplyしているため、プラグインのafterEvaluate呼ばれないためエラーを起こしてしまうのが今後の課題です。
56
+
57
+
58
+
59
+ 追記
60
+
61
+ ---
62
+
63
+ イベントを再発火させることで解決しました。
64
+
65
+ ```gradle
66
+
67
+ //rootproject/build.gradle
68
+
69
+ subprojects {
70
+
71
+ buildscript {
72
+
73
+ repositories {
74
+
75
+ jcenter()
76
+
77
+ maven { url = "http://files.minecraftforge.net/maven" }
78
+
79
+ }
80
+
81
+ dependencies {
82
+
83
+ classpath project.forgegradle // gradle.propertiesにて外部化
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
91
+ // パラメータを確保
92
+
93
+ def subproj, substate
94
+
95
+ afterEvaluate { p, s ->
96
+
97
+ subproj = p
98
+
99
+ substate = s
100
+
101
+ }
102
+
103
+
104
+
105
+ // evaluationDependsOnを使うことにより依存関係が読み込まれる
106
+
107
+ rootProject.evaluationDependsOn(project.name) // または project.evaluate() でも可
108
+
109
+
110
+
111
+ apply plugin: project.forgegradle_plugin // gradle.propertiesにて外部化
112
+
113
+
114
+
115
+ // イベントを再発火
116
+
117
+ project.projectEvaluationBroadcaster.afterEvaluate(subproj, substate);
118
+
119
+ }
120
+
121
+ ```