Integration of the Grunt-Frontend- with the Maven-Backend-Project master 2.0.0
authorKai Moritz <kai@juplo.de>
Mon, 24 Aug 2015 16:27:31 +0000 (18:27 +0200)
committerKai Moritz <kai@juplo.de>
Mon, 24 Aug 2015 21:29:48 +0000 (23:29 +0200)
.gitignore
.gitmodules [new file with mode: 0644]
Gruntfile.js [new file with mode: 0644]
package.json [new file with mode: 0644]
pom.xml
src/main/frontend [new submodule]
src/main/webapp/thymeleaf/templates/layout.html [deleted file]

index eb5a316..28dba0a 100644 (file)
@@ -1 +1,4 @@
 target
 target
+node
+**/node_modules
+src/main/frontend/dist
diff --git a/.gitmodules b/.gitmodules
new file mode 100644 (file)
index 0000000..c37f606
--- /dev/null
@@ -0,0 +1,3 @@
+[submodule "src/main/frontend"]
+       path = src/main/frontend
+       url = ../template-development
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644 (file)
index 0000000..a704356
--- /dev/null
@@ -0,0 +1,35 @@
+module.exports = function(grunt) {
+
+  grunt.loadNpmTasks('grunt-newer');
+
+  grunt.registerTask('frontend','Build HTML & CSS for Frontend', function() {
+    var
+    done = this.async(),
+    path = './src/main/frontend';
+
+    grunt.util.spawn({
+      cmd: 'npm',
+      args: ['install'],
+      opts: { cwd: path, stdio: 'inherit' }
+    }, function (err, result, code) {
+      if (err || code > 0) {
+        grunt.fail.warn('Failed installing node modules in "' + path + '".');
+      }
+      else {
+        grunt.log.ok('Installed node modules in "' + path + '".');
+      }
+
+      process.chdir(path);
+      require(path + '/Gruntfile.js')(grunt);
+      grunt.task.run('newer:copy');
+      grunt.task.run('newer:less');
+      grunt.task.run('newer:svgstore');
+
+      done();
+    });
+  });
+
+
+  grunt.registerTask('default', [ 'frontend' ]);
+
+};
diff --git a/package.json b/package.json
new file mode 100644 (file)
index 0000000..81fefa0
--- /dev/null
@@ -0,0 +1,12 @@
+{
+  "name": "maven-grunt-integration",
+  "description": "Example, how to ingegrat maven with a frontend developed with Grunt",
+  "homepage": "http://juplo.de/maven-grunt-integration",
+  "author": "kai@juplo.de",
+  "version": "1.0.0",
+  "devDependencies": {
+    "grunt": "~0.4.5",
+    "grunt-cli": "~0.1.13",
+    "grunt-newer": "~1.1.1"
+  }
+}
diff --git a/pom.xml b/pom.xml
index 3cb5566..7cfed12 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
   <groupId>de.juplo</groupId>
   <artifactId>maven-grunt-integration</artifactId>
   <name>Juplo - Example Integration of Maven and Grunt</name>
   <groupId>de.juplo</groupId>
   <artifactId>maven-grunt-integration</artifactId>
   <name>Juplo - Example Integration of Maven and Grunt</name>
-  <version>0.1</version>
+  <version>2.0.0</version>
   <packaging>war</packaging>
   <url>http://www.juplo.de/maven-grunt-integration</url>
 
   <packaging>war</packaging>
   <url>http://www.juplo.de/maven-grunt-integration</url>
 
           <showWarnings>true</showWarnings>
         </configuration>
       </plugin>
           <showWarnings>true</showWarnings>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-war-plugin</artifactId>
+        <version>2.6</version>
+        <configuration>
+          <webResources>
+            <resource>
+              <directory>src/main/frontend/dist</directory>
+            </resource>
+          </webResources>
+        </configuration>
+      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-source-plugin</artifactId>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-source-plugin</artifactId>
         <artifactId>jetty-maven-plugin</artifactId>
         <version>9.2.13.v20150730</version>
         <configuration>
         <artifactId>jetty-maven-plugin</artifactId>
         <version>9.2.13.v20150730</version>
         <configuration>
+          <webApp>
+            <resourceBases>
+              <resourceBase>src/main/frontend/dist</resourceBase>
+              <resourceBase>src/main/webapp</resourceBase>
+            </resourceBases>
+          </webApp>
           <useTestScope>true</useTestScope>
         </configuration>
       </plugin>
           <useTestScope>true</useTestScope>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>com.github.eirslett</groupId>
+        <artifactId>frontend-maven-plugin</artifactId>
+        <version>0.0.24</version>
+        <executions>
+          <execution>
+            <id>install node and npm</id>
+            <goals>
+              <goal>install-node-and-npm</goal>
+            </goals>
+            <configuration>
+              <nodeVersion>v0.10.18</nodeVersion>
+              <npmVersion>1.3.8</npmVersion>
+            </configuration>
+          </execution>
+          <execution>
+            <id>npm install</id>
+            <goals>
+              <goal>npm</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>grunt build</id>
+            <goals>
+              <goal>grunt</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 
     </plugins>
   </build>
 
diff --git a/src/main/frontend b/src/main/frontend
new file mode 160000 (submodule)
index 0000000..72b4e8d
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 72b4e8d3ea9ab5d4312605df4839779847a55773
diff --git a/src/main/webapp/thymeleaf/templates/layout.html b/src/main/webapp/thymeleaf/templates/layout.html
deleted file mode 100644 (file)
index 7f69a65..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.thymeleaf.org">
-
-<head>
-
-  <meta charset="utf-8" />
-  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-  <meta name="viewport" content="width=device-width, initial-scale=1" />
-
-  <title layout:title-pattern="Maven/Grunt-Integration - $CONTENT_TITLE">Layout-Template</title>
-
-</head>
-
-<body>
-
-  <header>
-    <h2 th:text="'Maven/Grunt-Integration :: ' + ${title}">Maven/Grunt-Integration :: Layout-Template</h2>
-    <hr />
-    <!-- Navigation -->
-    <nav id="menu" class="navbar navbar-submenu navbar-fixed-top">
-      <h3 class="sr-only">Navigation</h3>
-      <ul layout:fragment="menu">
-        <li><strong>Home</strong></li>
-        <li><a href="#">A</a></li>
-        <li><a href="#">B</a></li>
-        <li><a href="#">C</a></li>
-      </ul>
-    </nav>
-    <hr />
-  </header>
-
-
-  <main>
-
-    <article layout:fragment="content">
-      <h1>Layout-Template</h1>
-      <p>
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
-        eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
-        ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
-        aliquip ex ea commodo consequat. Duis aute irure dolor in
-        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-        pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-        culpa qui officia deserunt mollit anim id est laborum.
-      </p>
-      <h2>Duis aute irure dolor</h2>
-      <ul>
-        <li>Operators and other mathematical stuff: -+/*</li>
-        <li>
-          Characters offten used in programming languages:
-          {(&lt;&gt;)}@$?%*#;:&amp;/\!^&#034;&#039;`~
-        </li>
-        <li>Special german characters: ÄäÖöÜü</li>
-        <li>Other special characters: @?¢§%°</li>
-      </ul>
-      <h2>Excepteur sint occaecat cupidatat</h2>
-      <p>
-        Lorem ipsum dolor <em>sit amet</em>, consectetur adipisicing elit,
-        sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
-        Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
-        nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in
-        reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
-        pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
-        culpa qui officia deserunt mollit anim id est laborum.
-      </p>
-      <p>
-        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
-        eiusmod tempor incididunt ut labore et dolore magna aliqua.
-        <strong>Ut enim ad minim veniam, quis nostrud <em>exercitation
-        ullamco</em> laboris nisi ut aliquip ex ea commodo consequat</strong>.
-        Duis aute irure dolor in reprehenderit in voluptate velit esse
-        cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
-        cupidatat non proident, sunt in culpa qui officia deserunt mollit
-        anim id est laborum.
-      </p>
-    </article>
-
-  </main>
-
-  <footer>
-    <hr />
-    Brought to you by <a href="http://juplo.de/">juplo.de</a>!
-  </footer>
-
-</body>
-
-</html>