The Maven Jetty plugin has been updated to version 6.1.18. Apart from being a more stable version that the previous one (6.1.12.rc2), it adds the <reload> configuracion option (available from version 6.1.18 onwards). In particular, the plugin has been configured with <reload>manual</reload>. This way Jetty does not scan for changes to project files. Instead, it is necessary to hit "ENTER" key on the Jetty console whenever we want Jetty to reload the application. Manual reloading has a number of advantages over automatic reloading: + ZK can manage by itself the reloading of .zul pages (without intervertion of Jetty). + Whenever a developer creates/modifies "n" non ZK-managed files (e.g. .java files) to develop/fix a feature, she/he hits RETURN (after all modifications are done) to verify the changes, causing Jetty to reload the application only once (instead of "n" times when using automatic reloading). Minimizing the number of times Jetty reloads the application is important, since class loaders do not release memory properly after reloading (in consequence, after a number of reloads, Jetty must be restarted; as usual, JVM memory options can also be used to increase available memory if desired).
471 lines
19 KiB
XML
471 lines
19 KiB
XML
<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/maven-v4_0_0.xsd">
|
|
|
|
<modelVersion>4.0.0</modelVersion>
|
|
<groupId>org.navalplanner</groupId>
|
|
<artifactId>navalplanner</artifactId>
|
|
<packaging>pom</packaging>
|
|
<version>1.0.0</version>
|
|
<name>Naval Planner</name>
|
|
|
|
<!--
|
|
===================================================================
|
|
-->
|
|
<!-- Modules -->
|
|
<modules>
|
|
<module>navalplanner-business</module>
|
|
<module>navalplanner-gantt-zk</module>
|
|
<module>navalplanner-webapp</module>
|
|
</modules>
|
|
|
|
<!--
|
|
===================================================================
|
|
-->
|
|
<!--
|
|
Default values for properties. These default values are expected
|
|
to be valid for most profiles. Specific profiles can overwrite
|
|
values when necessary.
|
|
-->
|
|
<properties>
|
|
<!-- Data source properties -->
|
|
<dataSource.user>naval</dataSource.user>
|
|
<dataSource.password>naval</dataSource.password>
|
|
<dataSource.jndiName>jdbc/navalplanner-ds</dataSource.jndiName>
|
|
<testDataSource.user>${dataSource.user}</testDataSource.user>
|
|
<testDataSource.password>${dataSource.password}</testDataSource.password>
|
|
</properties>
|
|
|
|
<!--
|
|
===================================================================
|
|
-->
|
|
<!--
|
|
Profiles. * The build is always executed by selecting at least
|
|
two non-exclusive profiles. By default, such profiles are "dev"
|
|
and "postgresql" (meaning "use PostgreSQL assuming a development
|
|
environment"). * General profiles. There are two general
|
|
(database-independent) profiles: "dev" and "prod". The former is
|
|
used for development (including testing) and the latter is used
|
|
for production (including testing). As shown below, two
|
|
dataSources (databases schemas) are used in both profiles: one
|
|
for running (dataSource) and another one for the Maven test fase
|
|
(testDataSource). Note the Maven test fase is executed both with
|
|
development and production profiles. * Database-specific
|
|
profiles. There is a profile for each supported database. *
|
|
Specific profiles can be defined to better adapt to a particular
|
|
environment by overwriting/adding properties and/or including
|
|
other chunks of valid XML. * Usage: + mvn <<goal>> => Execute
|
|
<<goal>> with default profiles. + mvn -Pdev,<<database>> <<goal>
|
|
=> Execute <<goal>> with "dev" and <<database>> profiles. + mvn
|
|
-Pprod,<<database>> <<goal>> => Execute <<goal>> with "prod" and
|
|
<<database>> profiles. + Note that when using -P option all
|
|
desired profiles must be specified (e.g. "-Pprod" with the
|
|
intention to select "prod" and the default database profile is
|
|
not correct; "-Pprod,<<database>>" must be used instead). *
|
|
Examples: + mvn <<goal>> + mvn -Ppostgresql,prod <<goal>> + mvn
|
|
-Ppostgresql,dev <<goal>>
|
|
-->
|
|
<profiles>
|
|
|
|
<!-- Development profile -->
|
|
<profile>
|
|
<id>dev</id>
|
|
<activation>
|
|
<activeByDefault>true</activeByDefault>
|
|
</activation>
|
|
<properties>
|
|
<!-- Naval Planner environment properties -->
|
|
<navalplanner.mode>dev</navalplanner.mode>
|
|
<!-- Hibernate properties -->
|
|
<hibernate.show_sql>true</hibernate.show_sql>
|
|
<hibernate.format_sql>true</hibernate.format_sql>
|
|
<hibernate.use_sql_comments>true</hibernate.use_sql_comments>
|
|
<hibernate.hbm2ddl.auto>update</hibernate.hbm2ddl.auto>
|
|
</properties>
|
|
</profile>
|
|
|
|
<!-- Production profile -->
|
|
<profile>
|
|
<id>prod</id>
|
|
<properties>
|
|
<!-- Naval Planner environment properties -->
|
|
<navalplanner.mode>prod</navalplanner.mode>
|
|
<!-- Hibernate properties -->
|
|
<hibernate.show_sql>false</hibernate.show_sql>
|
|
<hibernate.format_sql>false</hibernate.format_sql>
|
|
<hibernate.use_sql_comments>false</hibernate.use_sql_comments>
|
|
<hibernate.hbm2ddl.auto>update</hibernate.hbm2ddl.auto>
|
|
</properties>
|
|
</profile>
|
|
|
|
<!-- PostgreSQL profile -->
|
|
<profile>
|
|
<id>postgresql</id>
|
|
<activation>
|
|
<activeByDefault>true</activeByDefault>
|
|
</activation>
|
|
<properties>
|
|
<!-- JDBC driver properties -->
|
|
<jdbcDriver.groupId>postgresql</jdbcDriver.groupId>
|
|
<jdbcDriver.artifactId>postgresql</jdbcDriver.artifactId>
|
|
<jdbcDriver.version>8.3-603.jdbc4</jdbcDriver.version>
|
|
<jdbcDriver.className>org.postgresql.Driver</jdbcDriver.className>
|
|
<!-- Data source properties -->
|
|
<dataSource.url>jdbc:postgresql://localhost/naval${navalplanner.mode}</dataSource.url>
|
|
<testDataSource.url>${dataSource.url}test</testDataSource.url>
|
|
<!-- Hibernate properties -->
|
|
<hibernate.dialect>org.hibernate.dialect.PostgreSQLDialect</hibernate.dialect>
|
|
</properties>
|
|
</profile>
|
|
|
|
<!-- MySQL profile -->
|
|
<profile>
|
|
<id>mysql</id>
|
|
<properties>
|
|
<!-- JDBC driver properties -->
|
|
<jdbcDriver.groupId>mysql</jdbcDriver.groupId>
|
|
<jdbcDriver.artifactId>mysql-connector-java</jdbcDriver.artifactId>
|
|
<jdbcDriver.version>5.0.5</jdbcDriver.version>
|
|
<jdbcDriver.className>com.mysql.jdbc.Driver</jdbcDriver.className>
|
|
<!-- Data source properties -->
|
|
<dataSource.url>jdbc:mysql://localhost/naval${navalplanner.mode}</dataSource.url>
|
|
<testDataSource.url>${dataSource.url}test</testDataSource.url>
|
|
<!-- Hibernate properties -->
|
|
<hibernate.dialect>org.hibernate.dialect.MySQLDialect</hibernate.dialect>
|
|
</properties>
|
|
</profile>
|
|
|
|
<!-- HSQLDB profile -->
|
|
<profile>
|
|
<id>hsqldb</id>
|
|
<properties>
|
|
<!-- JDBC driver properties -->
|
|
<jdbcDriver.groupId>hsqldb</jdbcDriver.groupId>
|
|
<jdbcDriver.artifactId>hsqldb</jdbcDriver.artifactId>
|
|
<jdbcDriver.version>1.8.0.7</jdbcDriver.version>
|
|
<jdbcDriver.className>org.hsqldb.jdbcDriver</jdbcDriver.className>
|
|
<!-- Data source properties -->
|
|
<dataSource.user>sa</dataSource.user>
|
|
<dataSource.password />
|
|
<dataSource.url>jdbc:hsqldb:target/hsqldb/naval${navalplanner.mode};shutdown=true</dataSource.url>
|
|
<testDataSource.url>jdbc:hsqldb:target/hsqldb/naval${navalplanner.mode}test;shutdown=true</testDataSource.url>
|
|
<!-- Hibernate properties -->
|
|
<hibernate.dialect>org.hibernate.dialect.HSQLDialect</hibernate.dialect>
|
|
</properties>
|
|
</profile>
|
|
|
|
</profiles>
|
|
|
|
<!--
|
|
===================================================================
|
|
-->
|
|
<!-- Dependency management -->
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<!-- JDBC driver -->
|
|
<dependency>
|
|
<groupId>${jdbcDriver.groupId}</groupId>
|
|
<artifactId>${jdbcDriver.artifactId}</artifactId>
|
|
<version>${jdbcDriver.version}</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<!-- Hibernate -->
|
|
<dependency>
|
|
<groupId>org.hibernate</groupId>
|
|
<artifactId>hibernate</artifactId>
|
|
<version>3.2.6.ga</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.hibernate</groupId>
|
|
<artifactId>hibernate-annotations</artifactId>
|
|
<version>3.3.1.GA</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.hibernate</groupId>
|
|
<artifactId>hibernate-validator</artifactId>
|
|
<version>3.0.0.ga</version>
|
|
</dependency>
|
|
<!-- JUnit -->
|
|
<!--
|
|
IMPORTANT: Spring TestContext 2.5.x is not compatible
|
|
with JUnit 4.5.
|
|
-->
|
|
<dependency>
|
|
<groupId>junit</groupId>
|
|
<artifactId>junit</artifactId>
|
|
<version>4.4</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- Easy mock -->
|
|
<dependency>
|
|
<groupId>org.easymock</groupId>
|
|
<artifactId>easymock</artifactId>
|
|
<version>2.4</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
|
|
<!-- Spring -->
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring</artifactId>
|
|
<version>2.5.6</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework</groupId>
|
|
<artifactId>spring-test</artifactId>
|
|
<version>2.5.6</version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>net.sf.json-lib</groupId>
|
|
<artifactId>json-lib</artifactId>
|
|
<version>2.2.3</version>
|
|
<classifier>jdk15</classifier>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>commons-collections</groupId>
|
|
<artifactId>commons-collections</artifactId>
|
|
<version>3.2</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>net.sf.ezmorph</groupId>
|
|
<artifactId>ezmorph</artifactId>
|
|
<version>1.0.6</version>
|
|
</dependency>
|
|
<!-- Commons lang-->
|
|
<dependency>
|
|
<groupId>commons-lang</groupId>
|
|
<artifactId>commons-lang</artifactId>
|
|
<version>2.4</version>
|
|
</dependency>
|
|
<!-- Commons Logging (required by many frameworks)-->
|
|
<dependency>
|
|
<groupId>commons-logging</groupId>
|
|
<artifactId>commons-logging</artifactId>
|
|
<version>1.0.4</version>
|
|
</dependency>
|
|
<!-- BeanShell (required by ZK)-->
|
|
<dependency>
|
|
<groupId>org.beanshell</groupId>
|
|
<artifactId>bsh</artifactId>
|
|
<version>2.0b4</version>
|
|
<scope>runtime</scope>
|
|
</dependency>
|
|
<!-- Apache Commons Fileupload (required by ZK) -->
|
|
<dependency>
|
|
<groupId>commons-fileupload</groupId>
|
|
<artifactId>commons-fileupload</artifactId>
|
|
<version>1.2.1</version>
|
|
<scope>runtime</scope>
|
|
</dependency>
|
|
<!-- ZK -->
|
|
<dependency>
|
|
<groupId>org.zkoss.zk</groupId>
|
|
<artifactId>zul</artifactId>
|
|
<version>3.6.1</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.zkoss.zk</groupId>
|
|
<artifactId>zkplus</artifactId>
|
|
<version>3.6.1</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.zkoss.zk</groupId>
|
|
<artifactId>zk</artifactId>
|
|
<version>3.6.1</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.zkoss.zk</groupId>
|
|
<artifactId>zkex</artifactId>
|
|
<version>3.6.1</version>
|
|
</dependency>
|
|
<!-- JGraphT -->
|
|
<dependency>
|
|
<groupId>org.jgrapht</groupId>
|
|
<artifactId>jgrapht-jdk1.5</artifactId>
|
|
<version>0.7.3</version>
|
|
</dependency>
|
|
<!-- Joda Time -->
|
|
<dependency>
|
|
<groupId>joda-time</groupId>
|
|
<artifactId>joda-time</artifactId>
|
|
<version>1.6</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>joda-time</groupId>
|
|
<artifactId>joda-time-hibernate</artifactId>
|
|
<version>1.1</version>
|
|
</dependency>
|
|
<!-- Naval Planner ZK Components -->
|
|
<dependency>
|
|
<groupId>org.navalplanner</groupId>
|
|
<artifactId>navalplanner-gantt-zk</artifactId>
|
|
<version>1.0.0</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.navalplanner</groupId>
|
|
<artifactId>navalplanner-gantt-zk</artifactId>
|
|
<version>1.0.0</version>
|
|
</dependency>
|
|
<!-- Naval Planner Business -->
|
|
<dependency>
|
|
<groupId>org.navalplanner</groupId>
|
|
<artifactId>navalplanner-business</artifactId>
|
|
<version>1.0.0</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>javax.servlet</groupId>
|
|
<artifactId>servlet-api</artifactId>
|
|
<version>2.5</version>
|
|
<type>jar</type>
|
|
<scope>provided</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
|
|
<build>
|
|
|
|
<!-- =============================================================== -->
|
|
<!-- Filtering -->
|
|
<resources>
|
|
|
|
<!--
|
|
Apply filtering to files matching the following
|
|
expressions in src/main/resources.
|
|
-->
|
|
<resource>
|
|
<directory>src/main/resources</directory>
|
|
<filtering>true</filtering>
|
|
<includes>
|
|
<include>*spring-config.xml</include>
|
|
<include>*hibernate.cfg.xml</include>
|
|
</includes>
|
|
</resource>
|
|
|
|
<!--
|
|
Continue considering resources the files in
|
|
src/main/resources, but without applying filtering.
|
|
-->
|
|
<resource>
|
|
<directory>src/main/resources</directory>
|
|
</resource>
|
|
|
|
<!-- Filter Jetty configuration -->
|
|
<resource>
|
|
<directory>../src/main/jetty</directory>
|
|
<includes>
|
|
<include>jetty-env.xml</include>
|
|
</includes>
|
|
<targetPath>../jetty</targetPath>
|
|
<filtering>true</filtering>
|
|
</resource>
|
|
</resources>
|
|
|
|
<testResources>
|
|
|
|
<!--
|
|
Apply filtering to files matching the following
|
|
expressions in src/test/resources.
|
|
-->
|
|
<testResource>
|
|
<directory>src/test/resources</directory>
|
|
<filtering>true</filtering>
|
|
<includes>
|
|
<include>*spring-config-test.xml</include>
|
|
<include>*hibernate-test.cfg.xml</include>
|
|
</includes>
|
|
</testResource>
|
|
|
|
<!--
|
|
Continue considering resources the files in
|
|
src/test/resources, but without applying filtering.
|
|
-->
|
|
<testResource>
|
|
<directory>src/test/resources</directory>
|
|
</testResource>
|
|
|
|
</testResources>
|
|
|
|
<plugins>
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- Compiler configuration -->
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-compiler-plugin</artifactId>
|
|
<configuration>
|
|
<verbose>true</verbose>
|
|
<source>1.6</source>
|
|
<target>1.6</target>
|
|
<encoding>UTF-8</encoding>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- Assembly configuration -->
|
|
<plugin>
|
|
<artifactId>maven-assembly-plugin</artifactId>
|
|
<configuration>
|
|
<descriptors>
|
|
<descriptor>src/main/assembly/src.xml</descriptor>
|
|
</descriptors>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-war-plugin</artifactId>
|
|
<configuration>
|
|
<webResources>
|
|
<resource>
|
|
<directory>src/main/webapp/META-INF</directory>
|
|
<targetPath>META-INF</targetPath>
|
|
<filtering>true</filtering>
|
|
<includes>
|
|
<include>context.xml</include>
|
|
</includes>
|
|
</resource>
|
|
</webResources>
|
|
</configuration>
|
|
</plugin>
|
|
|
|
<!-- =========================================================== -->
|
|
<!-- Jetty configuration -->
|
|
<plugin>
|
|
|
|
<groupId>org.mortbay.jetty</groupId>
|
|
<artifactId>maven-jetty-plugin</artifactId>
|
|
<version>6.1.18</version>
|
|
<configuration>
|
|
<jettyEnvXml>target/jetty/jetty-env.xml</jettyEnvXml>
|
|
<reload>manual</reload>
|
|
|
|
<!-- Log to the console. -->
|
|
<requestLog implementation="org.mortbay.jetty.NCSARequestLog">
|
|
<!--
|
|
This do anything for Jetty, but is a
|
|
workaround for a Maven bug that prevents the
|
|
requestLog from being set.
|
|
-->
|
|
<append>true</append>
|
|
</requestLog>
|
|
<!--
|
|
<connectors>
|
|
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
|
|
<port>9090</port>
|
|
</connector>
|
|
</connectors>
|
|
-->
|
|
</configuration>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>${jdbcDriver.groupId}</groupId>
|
|
<artifactId>${jdbcDriver.artifactId}</artifactId>
|
|
<version>${jdbcDriver.version}</version>
|
|
</dependency>
|
|
</dependencies>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|