blob: 73417062c6b28b585468aa0718422790d5473644 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
<version>17</version>
<relativePath></relativePath> <!-- prevent loading of ../pom.xml as the "parent" -->
</parent>
<groupId>org.apache.brooklyn</groupId>
<artifactId>brooklyn-jsgui</artifactId>
<version>0.10.0</version> <!-- BROOKLYN_VERSION -->
<packaging>war</packaging>
<name>Brooklyn REST JavaScript Web GUI</name>
<description>
JavaScript+HTML GUI for interacting with Brooklyn, using the REST API
</description>
<scm>
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/brooklyn-ui.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/brooklyn-ui.git</developerConnection>
<url>https://git-wip-us.apache.org/repos/asf?p=brooklyn-ui.git</url>
<tag>HEAD</tag>
</scm>
<issueManagement>
<system>JIRA</system>
<url>https://issues.apache.org/jira/browse/BROOKLYN</url>
</issueManagement>
<ciManagement>
<system>Jenkins</system>
<url>https://builds.apache.org/view/Brooklyn/job/brooklyn-ui-master/</url>
</ciManagement>
<mailingLists>
<mailingList>
<name>Brooklyn Developer List</name>
<subscribe>dev-subscribe@brooklyn.apache.org</subscribe>
<unsubscribe>dev-unsubscribe@brooklyn.apache.org</unsubscribe>
<post>dev@brooklyn.apache.org</post>
<archive>
http://mail-archives.apache.org/mod_mbox/brooklyn-dev/
</archive>
</mailingList>
</mailingLists>
<properties>
<project.build.webapp>
${project.build.directory}/${project.build.finalName}
</project.build.webapp>
<nodejs.path>${project.basedir}/target/nodejs/node</nodejs.path>
<jasmine-maven-plugin.version>2.1</jasmine-maven-plugin.version>
<phantomjs.version>2.1.1</phantomjs.version>
<maven-dependency-plugin.version>2.8</maven-dependency-plugin.version>
<nodejs-maven-plugin.version>1.0.3</nodejs-maven-plugin.version>
<maven-war-plugin.version>2.4</maven-war-plugin.version>
<nodejs-maven-binaries.version>0.10.25</nodejs-maven-binaries.version>
<requirejs-maven-plugin.version>2.0.0</requirejs-maven-plugin.version>
<maven-replacer-plugin.version>1.5.2</maven-replacer-plugin.version>
<maven-resources-plugin.version>2.7</maven-resources-plugin.version>
</properties>
<build>
<resources>
<resource>
<directory>${project.basedir}/src/test/resources/fixtures</directory>
<targetPath>${project.build.directory}/jasmine/fixtures</targetPath>
</resource>
</resources>
<!-- Insert special LICENSE/NOTICE into the <test-jar>/META-INF folder -->
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
</testResource>
<testResource>
<targetPath>META-INF</targetPath>
<directory>${basedir}/src/test/license/files</directory>
</testResource>
</testResources>
<plugins>
<!-- require maven 3.1. jasmine will fail with cryptic error otherwise,
so let's make it print a nicer message if running with the wrong maven. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<executions>
<execution>
<id>enforce-maven</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<requireMavenVersion>
<version>3.1</version>
</requireMavenVersion>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<!--
run js tests with: $ mvn clean process-test-resources jasmine:test
run tests in the browser with: $ mvn jasmine:bdd
-->
<plugin>
<groupId>com.github.searls</groupId>
<artifactId>jasmine-maven-plugin</artifactId>
<version>${jasmine-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>test</goal>
</goals>
</execution>
</executions>
<configuration>
<!--Version of phantomjs needs to be specified for linux-->
<phantomjs>
<version>${phantomjs.version}</version>
<checkSystemPath>true</checkSystemPath>
<enforceVersion>true</enforceVersion>
<source>REPOSITORY</source>
<baseUrl/>
<outputDirectory>target/phantomjs</outputDirectory>
</phantomjs>
<!--Uses the require.js test spec-->
<specRunnerTemplate>REQUIRE_JS</specRunnerTemplate>
<preloadSources>
<source>js/libs/require.js</source>
</preloadSources>
<!--Sources-->
<jsSrcDir>${project.basedir}/src/main/webapp/assets</jsSrcDir>
<jsTestSrcDir>${project.basedir}/src/test/javascript/specs</jsTestSrcDir>
<customRunnerConfiguration>
${project.basedir}/src/test/javascript/config.txt
</customRunnerConfiguration>
<!-- Makes output terser -->
<format>progress</format>
<additionalContexts>
<!-- If context roots start with a / the resource will be available on the server at //root. -->
<!-- It is an error for context roots to end with a /. -->
<context>
<contextRoot>fixtures</contextRoot>
<directory>${project.build.directory}/jasmine/fixtures</directory>
</context>
</additionalContexts>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<configuration>
<useCache>true</useCache> <!-- to prevent replaced files being overwritten -->
<!-- Insert special LICENSE/NOTICE into the <war>/META-INF folder -->
<webResources>
<webResource>
<targetPath>META-INF</targetPath>
<directory>${basedir}/src/main/license/files</directory>
</webResource>
</webResources>
<archive>
<manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<!-- Disable the automatic LICENSE/NOTICE placement from the upstream pom, because we need to include
bundled dependencies. See "webResources" section above for where we include the new LICENSE/NOTICE -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<skip>true</skip>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.4</version>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>process-classes</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
<configuration>
<supportedProjectTypes>
<supportedProjectType>war</supportedProjectType>
</supportedProjectTypes>
<instructions>
<Web-ContextPath>/</Web-ContextPath>
</instructions>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
<!-- Overrides 0.11 from parent. Remove when parent catches up. -->
<version>0.12</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
<configuration>
<consoleOutput>true</consoleOutput>
<excludes combine.children="append">
<!-- Exclude sandbox because not part of distribution: not in tgz, and not uploaded to maven-central -->
<exclude>sandbox/**</exclude>
<!-- Exclude release because not part of distribution: not in tgz, and not uploaded to maven-central -->
<exclude>release/**</exclude>
<exclude>README.md</exclude>
<exclude>.mvn/jvm.config</exclude>
<!-- git and IDE project files -->
<!-- see https://issues.apache.org/jira/browse/RAT-107 -->
<exclude>**/.git/**</exclude>
<exclude>**/.gitignore</exclude>
<exclude>**/.repository/**</exclude>
<exclude>**/.idea/**</exclude>
<exclude>**/*.iml</exclude>
<exclude>**/.classpath/**</exclude>
<exclude>**/.project</exclude>
<exclude>**/.settings/**</exclude>
<exclude>**/*.log</exclude>
<exclude>**/brooklyn*.log.*</exclude>
<exclude>**/target/**</exclude>
<!-- Exclude netbeans config files (not part of the project, but often on users' drives -->
<exclude>**/nbactions.xml</exclude>
<exclude>**/nb-configuration.xml</exclude>
<!-- files not requiring licence -->
<exclude>ignored/**</exclude>
<exclude>LICENSE.md</exclude>
<exclude>**/src/main/license/**</exclude>
<exclude>**/src/test/license/**</exclude>
<exclude>**/MANIFEST.MF</exclude>
<exclude>**/test-output/**</exclude>
<!-- JavaScript & CSS code that is not copyright of Apache Foundation. It is included in NOTICE. -->
<exclude>**/src/main/webapp/assets/js/libs/**</exclude>
<exclude>**/src/build/requirejs-maven-plugin/r.js</exclude>
<exclude>src/main/webapp/assets/js/util/code-complete/brooklyn-yaml-completion-proposals.js</exclude>
<exclude>src/main/webapp/assets/js/util/code-complete/js-yaml-parser.js</exclude>
<exclude>src/main/webapp/assets/css/codemirror.css</exclude>
<exclude>src/main/webapp/assets/css/easy-autocomplete.css</exclude>
<exclude>src/main/webapp/assets/css/show-hint.css</exclude>
<exclude>src/main/webapp/assets/images/Sorting icons.psd</exclude>
<!-- Downloaded if missing, binary - not included in the repo -->
<exclude>src/main/webapp/assets/img/zeroclipboard/ZeroClipboard.swf</exclude>
<exclude>src/test/resources/fixtures/*</exclude>
<!--
Copy of swagger-ui from https://github.com/swagger-api/swagger-ui tag::v2.1.3
-->
<exclude>**/src/main/webapp/assets/swagger-ui/**</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.github.skwakman.nodejs-maven-plugin
</groupId>
<artifactId>
nodejs-maven-plugin
</artifactId>
<versionRange>
[1.0.3,)
</versionRange>
<goals>
<goal>extract</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.codehaus.mojo</groupId>
<artifactId>
wagon-maven-plugin
</artifactId>
<versionRange>[1.0,)</versionRange>
<goals>
<goal>download-single</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
<plugin>
<!-- maven knows there is nothing to compile; but eclipse complains if this block is absent -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>nodejs-path-override</id>
<activation>
<os>
<family>linux</family>
</os>
</activation>
<properties>
<nodejs.path>${project.basedir}/src/build/nodejs</nodejs.path>
</properties>
<dependencies>
<dependency>
<groupId>com.github.skwakman.nodejs-maven-binaries</groupId>
<artifactId>nodejs-maven-binaries</artifactId>
<version>${nodejs-maven-binaries.version}</version>
<classifier>linux-x64</classifier>
<type>zip</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven-dependency-plugin.version}</version>
<executions>
<execution>
<id>unpack-nodejs64</id>
<phase>prepare-package</phase>
<goals>
<goal>unpack-dependencies</goal>
</goals>
<configuration>
<includeGroupIds>com.github.skwakman.nodejs-maven-binaries</includeGroupIds>
<includeArtifactIds>nodejs-maven-binaries</includeArtifactIds>
<outputDirectory>
${project.basedir}/target/nodejs64/
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>Optimize resources</id>
<activation>
<property>
<name>!skipOptimization</name>
</property>
</activation>
<build>
<plugins>
<!-- Installs node.js in target/. Means we get the benefits of node's speed
(compared to Rhino) without having to install it manually. -->
<plugin>
<groupId>com.github.skwakman.nodejs-maven-plugin</groupId>
<artifactId>nodejs-maven-plugin</artifactId>
<version>${nodejs-maven-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>extract</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- target directory for node binaries -->
<targetDirectory>${project.basedir}/target/nodejs/</targetDirectory>
</configuration>
</plugin>
<!-- Including the exploded goal means sources are in place ready for the replacer plugin. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin.version}</version>
<executions>
<execution>
<id>prepare-war</id>
<phase>prepare-package</phase>
<goals>
<goal>exploded</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Runs the require.js optimizer with node to produce a single artifact. -->
<plugin>
<groupId>com.github.mcheely</groupId>
<artifactId>requirejs-maven-plugin</artifactId>
<version>${requirejs-maven-plugin.version}</version>
<executions>
<execution>
<id>optimize-js</id>
<phase>prepare-package</phase>
<goals>
<goal>optimize</goal>
</goals>
<configuration>
<configFile>${project.basedir}/src/build/optimize-js.conf.js</configFile>
</configuration>
</execution>
<execution>
<id>optimize-css</id>
<phase>prepare-package</phase>
<goals>
<goal>optimize</goal>
</goals>
<configuration>
<configFile>${project.basedir}/src/build/optimize-css.conf.js</configFile>
</configuration>
</execution>
</executions>
<configuration>
<nodeExecutable>${nodejs.path}</nodeExecutable>
<optimizerFile>${project.basedir}/src/build/requirejs-maven-plugin/r.js</optimizerFile>
<!-- Replaces Maven tokens in the build file with their values -->
<filterConfig>true</filterConfig>
</configuration>
</plugin>
<!-- Modify index.html to point to the optimized resources generated above. -->
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>replacer</artifactId>
<version>${maven-replacer-plugin.version}</version>
<executions>
<execution>
<id>modify-for-optimized</id>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<file>${project.build.webapp}/index.html</file>
<replacements>
<replacement>
<token>assets/js/config.js</token>
<value>assets/js/gui.all.min.js</value>
</replacement>
<replacement>
<token>assets/css/styles.css</token>
<value>assets/css/styles.min.css</value>
</replacement>
<replacement>
<token>GIT_SHA_1</token>
<value>${buildNumber}</value>
</replacement>
</replacements>
</configuration>
</plugin>
<!-- Compress the minified files. Jetty will serve the gzipped content instead. -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>Compress resources</id>
<phase>prepare-package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<gzip src="${project.build.webapp}/assets/css/styles.min.css"
destfile="${project.build.webapp}/assets/css/styles.min.css.gz"/>
<gzip src="${project.build.webapp}/assets/css/brooklyn.css"
destfile="${project.build.webapp}/assets/css/brooklyn.css.gz"/>
<gzip src="${project.build.webapp}/assets/js/gui.all.min.js"
destfile="${project.build.webapp}/assets/js/gui.all.min.js.gz"/>
<gzip src="${project.build.webapp}/assets/js/libs/require.js"
destfile="${project.build.webapp}/assets/js/libs/require.js.gz"/>
</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- see README in the directory referenced below -->
<id>download-zeroclipboard</id>
<activation>
<file>
<missing>src/main/webapp/assets/img/zeroclipboard/ZeroClipboard.swf</missing>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>download-zeroclipboard</id>
<phase>generate-sources</phase>
<goals>
<goal>download-single</goal>
</goals>
<configuration>
<url>http://cdnjs.cloudflare.com</url>
<fromFile>/ajax/libs/zeroclipboard/1.3.5/ZeroClipboard.swf</fromFile>
<toDir>src/main/webapp/assets/img/zeroclipboard/</toDir>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>