summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2022-03-17 17:29:12 +0100
committerFabian Mastenbroek <mail.fabianm@gmail.com>2022-04-05 13:46:33 +0200
commit6d67cabc6fd3d59982a9501fad08b8e06a2e2d5b (patch)
tree95b8863ab840bd0e51a5d24b69f6ecaee5945096
parent8ca917ec9b0dd129729c527da77e2eb0ea3abf58 (diff)
build(web/ui): Add Gradle integration with Next.js project
This change adds support for building the OpenDC web interface project that uses Next.js using Gradle. This enables a single build pipeline using Gradle.
-rw-r--r--buildSrc/build.gradle.kts2
-rw-r--r--gradle/libs.versions.toml2
-rw-r--r--opendc-web/opendc-web-ui/build.gradle.kts61
-rw-r--r--opendc-web/opendc-web-ui/next.config.js1
-rw-r--r--opendc-web/opendc-web-ui/package.json3
5 files changed, 68 insertions, 1 deletions
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
index d62ade8c..dfe89d2e 100644
--- a/buildSrc/build.gradle.kts
+++ b/buildSrc/build.gradle.kts
@@ -41,4 +41,6 @@ dependencies {
implementation(libs.jandex.gradle)
implementation(libs.quarkus.gradle)
+
+ implementation(libs.gradle.node)
}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 24d96b5a..5aee60fd 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -4,6 +4,7 @@ clikt = "3.4.0"
config = "1.4.2"
commons-math3 = "3.6.1"
dokka = "1.6.10"
+gradle-node = "3.2.1"
hadoop = "3.3.1"
jackson = "2.13.2"
jandex-gradle = "0.11.0"
@@ -103,6 +104,7 @@ microprofile-openapi-api = { module = "org.eclipse.microprofile.openapi:micropro
# Other (Build)
dokka-gradle = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" }
+gradle-node = { module = "com.github.node-gradle:gradle-node-plugin", version.ref = "gradle-node" }
jandex-gradle = { module = "org.kordamp.gradle:jandex-gradle-plugin", version.ref = "jandex-gradle" }
ktlint-gradle = { module = "org.jlleitschuh.gradle:ktlint-gradle", version.ref = "ktlint-gradle" }
jmh-gradle = { module = "me.champeau.jmh:jmh-gradle-plugin", version.ref = "jmh-gradle" }
diff --git a/opendc-web/opendc-web-ui/build.gradle.kts b/opendc-web/opendc-web-ui/build.gradle.kts
index 7edfd134..9063d0e3 100644
--- a/opendc-web/opendc-web-ui/build.gradle.kts
+++ b/opendc-web/opendc-web-ui/build.gradle.kts
@@ -19,3 +19,64 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
+
+import com.github.gradle.node.yarn.task.YarnTask
+
+description = "Web interface for OpenDC"
+
+plugins {
+ java
+ id("com.github.node-gradle.node")
+}
+
+val lintTask = tasks.register<YarnTask>("lintNext") {
+ args.set(listOf("lint"))
+ dependsOn(tasks.yarn)
+ inputs.dir("src")
+ inputs.files("package.json", "next.config.js", ".eslintrc")
+ outputs.upToDateWhen { true }
+}
+
+val buildTask = tasks.register<YarnTask>("buildNext") {
+ args.set(listOf("build"))
+ dependsOn(tasks.yarn)
+ inputs.dir(project.fileTree("src"))
+ inputs.dir("node_modules")
+ inputs.files("package.json", "next.config.js")
+ outputs.dir("${project.buildDir}/build")
+}
+
+tasks.register<YarnTask>("dev") {
+ args.set(listOf("dev"))
+ dependsOn(tasks.yarn)
+ inputs.dir(project.fileTree("src"))
+ inputs.dir("node_modules")
+ inputs.files("package.json", "next.config.js")
+ outputs.upToDateWhen { true }
+}
+
+tasks.register<YarnTask>("start") {
+ args.set(listOf("start"))
+ dependsOn(buildTask)
+ inputs.dir(project.fileTree("src"))
+ inputs.dir("node_modules")
+ inputs.files("package.json", "next.config.js")
+ outputs.upToDateWhen { true }
+}
+
+sourceSets {
+ java {
+ main {
+ java.srcDir("src")
+ resources.srcDir("public")
+ }
+
+ test {
+ java.srcDir("test")
+ }
+ }
+}
+
+tasks.test {
+ dependsOn(lintTask)
+}
diff --git a/opendc-web/opendc-web-ui/next.config.js b/opendc-web/opendc-web-ui/next.config.js
index ceb0900e..59341b1f 100644
--- a/opendc-web/opendc-web-ui/next.config.js
+++ b/opendc-web/opendc-web-ui/next.config.js
@@ -30,6 +30,7 @@ module.exports = withConfig({
experimental: {
eslint: true
},
+ distDir: 'build/next',
async redirects() {
return [
{
diff --git a/opendc-web/opendc-web-ui/package.json b/opendc-web/opendc-web-ui/package.json
index 1a4552bf..816c0177 100644
--- a/opendc-web/opendc-web-ui/package.json
+++ b/opendc-web/opendc-web-ui/package.json
@@ -69,9 +69,10 @@
"format": "prettier --write src",
"precommit": "lint-staged",
"dev": "next dev",
+ "lint": "next lint",
"build": "next build",
"start": "next start",
- "export": "next export -o build"
+ "export": "next export -o build/export"
},
"browserslist": {
"production": [