diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..f5f2fc39 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +mvnw.cmd eol=crlf +gradlew.bat eol=crlf diff --git a/.gitignore b/.gitignore index 73978d53..02e89a85 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ ais-lib-communication/aisbus.xml .idea *.iml .DS_Store - +.gradle +build/ diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 00000000..c6feb8bb Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 00000000..6637cedb --- /dev/null +++ b/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.3.9/apache-maven-3.3.9-bin.zip \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..9bcf9994 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,3 @@ +language: java +jdk: + - oraclejdk8 diff --git a/ais-lib-cli/build.gradle b/ais-lib-cli/build.gradle new file mode 100644 index 00000000..29d79534 --- /dev/null +++ b/ais-lib-cli/build.gradle @@ -0,0 +1,8 @@ + +description = 'AisLib CLI' +dependencies { + compile project(':ais-lib-communication') + compile project(':ais-lib-utils') + compile group: 'dk.dma.commons', name: 'dma-commons-app', version:'0.5-SNAPSHOT' + compile group: 'commons-io', name: 'commons-io', version:'2.4' +} diff --git a/ais-lib-cli/pom.xml b/ais-lib-cli/pom.xml index 2ac889bd..c61325de 100644 --- a/ais-lib-cli/pom.xml +++ b/ais-lib-cli/pom.xml @@ -4,7 +4,8 @@ dk.dma.ais.lib ais-parent - 2.4-SNAPSHOT + 2.4-CCG-SNAPSHOT + ../pom.xml jar diff --git a/ais-lib-communication/build.gradle b/ais-lib-communication/build.gradle new file mode 100644 index 00000000..eaeb625f --- /dev/null +++ b/ais-lib-communication/build.gradle @@ -0,0 +1,15 @@ + +description = 'AIS Communication' +dependencies { + compile project(':ais-lib-messages') + compile group: 'dk.dma.commons', name: 'dma-commons-util', version:'0.5-SNAPSHOT' + compile group: 'dk.dma.enav', name: 'enav-util', version:'0.5' + compile group: 'com.beust', name: 'jcommander', version:'1.30' + compile group: 'javax.xml.bind', name: 'jaxb-api', version:'2.2.7' + compile group: 'org.antlr', name: 'antlr4-runtime', version:'4.2' + compile group: 'de.micromata.jak', name: 'JavaAPIforKml', version:'2.2.0' + compile group: 'org.apache.commons', name: 'commons-csv', version:'1.1' + compile group: 'org.apache.commons', name: 'commons-collections4', version:'4.1' + testCompile group: 'net.maritimecloud', name: 'mc-util', version:'0.1' + testCompile group: 'org.hamcrest', name: 'hamcrest-library', version:'1.3' +} diff --git a/ais-lib-communication/pom.xml b/ais-lib-communication/pom.xml index 88b9cfd9..a8d8de42 100755 --- a/ais-lib-communication/pom.xml +++ b/ais-lib-communication/pom.xml @@ -5,7 +5,7 @@ dk.dma.ais.lib ais-parent - 2.4-SNAPSHOT + 2.4-CCG-SNAPSHOT ../pom.xml @@ -15,6 +15,30 @@ + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + com.sun.tools.jxc.maven2 maven-jaxb-schemagen-plugin @@ -97,5 +121,16 @@ commons-csv 1.1 + + org.apache.commons + commons-collections4 + 4.1 + + + org.hamcrest + hamcrest-library + 1.3 + test + - \ No newline at end of file + diff --git a/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacket.java b/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacket.java index 579cb9dc..897dcae5 100644 --- a/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacket.java +++ b/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacket.java @@ -14,15 +14,6 @@ */ package dk.dma.ais.packet; -import static java.util.Objects.requireNonNull; - -import java.nio.ByteBuffer; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Date; -import java.util.List; - -import net.jcip.annotations.NotThreadSafe; import dk.dma.ais.binary.SixbitException; import dk.dma.ais.message.AisMessage; import dk.dma.ais.message.AisMessageException; @@ -31,6 +22,15 @@ import dk.dma.ais.sentence.Vdm; import dk.dma.enav.model.geometry.Position; import dk.dma.enav.model.geometry.PositionTime; +import net.jcip.annotations.NotThreadSafe; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +import static java.util.Objects.requireNonNull; /** * Encapsulation of the VDM lines containing a single AIS message including leading proprietary tags and comment/tag @@ -43,6 +43,7 @@ public class AisPacket implements Comparable { private final String rawMessage; private transient Vdm vdm; + private transient Vsi vsi; private transient AisPacketTags tags; private AisMessage message; private volatile long timestamp = Long.MIN_VALUE; @@ -56,6 +57,12 @@ private AisPacket(String stringMessage) { this.vdm = vdm; } + public AisPacket(Vdm correlatedVdm, Vsi vsi, String stringMessage) { + this(stringMessage); + this.vdm = correlatedVdm; + this.vsi = vsi; + } + public static AisPacket fromByteBuffer(ByteBuffer buffer) { int cap = buffer.remaining(); byte[] buf = new byte[cap]; @@ -156,7 +163,7 @@ public AisMessage getAisMessage() throws AisMessageException, SixbitException { * @return */ public boolean isValidMessage() { - return tryGetAisMessage() != null; + return isVsi() || tryGetAisMessage() != null; } /** @@ -189,8 +196,7 @@ public static AisPacket from(String stringMessage) { * Construct AisPacket from raw packet string * * @param messageString - * @param optional - * factory + * * @return * @throws SentenceException */ @@ -213,4 +219,12 @@ public static AisPacket readFromString(String messageString) throws SentenceExce public int compareTo(AisPacket p) { return Long.compare(getBestTimestamp(), p.getBestTimestamp()); } + + public boolean isVsi() { + return vsi != null; + } + + public Vsi getVsi() { + return vsi; + } } diff --git a/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketParser.java b/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketParser.java index 4d18539a..377b9842 100644 --- a/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketParser.java +++ b/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketParser.java @@ -21,13 +21,18 @@ import dk.dma.ais.sentence.SentenceLine; import dk.dma.ais.sentence.Vdm; import net.jcip.annotations.NotThreadSafe; +import org.apache.commons.collections4.map.PassiveExpiringMap; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayDeque; import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; import java.util.LinkedList; +import java.util.Map; +import java.util.concurrent.TimeUnit; /** * Class to parse lines in a stream containing VDM sentences. The class will deliver packets containing complete VDM and @@ -51,6 +56,8 @@ public class AisPacketParser { /** A received VDO/VDM */ private Vdm vdm = new Vdm(); + + private Map vdmMessagesInTheLast2Seconds = Collections.synchronizedMap(new PassiveExpiringMap<>(2, TimeUnit.SECONDS, new HashMap<>())); /** * Sentence line parser @@ -91,7 +98,7 @@ private AisPacket readLine(String line, boolean retry) throws SentenceException } sentenceTrace.addLast(line); } - + sentenceLine.parse(line); // Ignore everything else than sentences @@ -119,7 +126,9 @@ private AisPacket readLine(String line, boolean retry) throws SentenceException } // Add line to raw packet - packetLines.add(line); + if (!sentenceLine.isFormatter("VSI")) { + packetLines.add(line); + } // Check if proprietary line if (sentenceLine.isProprietary()) { @@ -133,42 +142,68 @@ private AisPacket readLine(String line, boolean retry) throws SentenceException } // Check if VDM. If not the possible current VDM is broken. - if (!sentenceLine.isFormatter("VDM", "VDO")) { + if (!sentenceLine.isFormatter("VDM", "VDO", "VSI")) { newVdm(); return null; } - // Parse VDM - int result; - try { - result = vdm.parse(sentenceLine); - } catch (SentenceException e) { - newVdm(); - // Do a single retry with the current line. The faulty sentence may be the last, not this one. - if (!retry) { - LOG.debug("Discarding current sentence group. New start: " + e.getMessage()); - return readLine(line, true); + AisPacket packet; + if (sentenceLine.isFormatter("VDM", "VDO")) { + int result; + try { + result = vdm.parse(sentenceLine); + } catch (SentenceException e) { + newVdm(); + // Do a single retry with the current line. The faulty sentence may be the last, not this one. + if (!retry) { + LOG.debug("Discarding current sentence group. New start: " + e.getMessage()); + return readLine(line, true); + } + throw new SentenceException(e, sentenceTrace); } - throw new SentenceException(e, sentenceTrace); - } - // If not complete package wait for more - if (result != 0) { - return null; - } + // If not complete package wait for more + if (result != 0) { + return null; + } - // Complete package have been read + // Complete package have been read - // Put proprietary tags on vdm - if (tags.size() > 0) { - vdm.setTags(new LinkedList<>(tags)); - } + // Put proprietary tags on vdm + if (tags.size() > 0) { + vdm.setTags(new LinkedList<>(tags)); + } + + packet = new AisPacket(vdm, StringUtils.join(packetLines, "\r\n")); + + keepPacketForVsiCorrelation(packet); + } else { // VSI + Vsi vsi = new Vsi(); + vsi.parse(sentenceLine); - // Make packet - AisPacket packet = new AisPacket(vdm, StringUtils.join(packetLines, "\r\n")); + String messageKey = sentenceLine.getFields().get(1) + sentenceLine.getFields().get(2); + AisPacket correlatedVdmPacket = vdmMessagesInTheLast2Seconds.remove(messageKey); + + if (correlatedVdmPacket != null) { + Vdm vdm = correlatedVdmPacket.getVdm(); + + packet = new AisPacket(vdm, vsi, correlatedVdmPacket.getStringMessage()); + } else { + packet = null; + } + } newVdm(); return packet; } + + private void keepPacketForVsiCorrelation(AisPacket packet) { + if (packet.getVdm().getCommentBlock() != null) { + SentenceLine sentenceLine = new SentenceLine(packet.getVdm().getRawSentencesJoined()); + String stationId = packet.getVdm().getCommentBlock().getString("s"); + String messageSequenceNumber = sentenceLine.getFields().get(3); + vdmMessagesInTheLast2Seconds.put(stationId + messageSequenceNumber, AisPacket.from(packet.getStringMessage())); + } + } } diff --git a/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketReader.java b/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketReader.java index a6995022..f350a8d4 100644 --- a/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketReader.java +++ b/ais-lib-communication/src/main/java/dk/dma/ais/packet/AisPacketReader.java @@ -171,15 +171,15 @@ private AisPacket handleLine(String line) throws IOException { if (throwExceptions) { throw new IOException(se); } - LOG.error("Sentence error: " + line + " (possible related proptag: " + se.getPossibleProprietaryTag() + ")"); - LOG.debug("Sentence trace: " + se.getMessage()); + LOG.error("Sentence error: " + line + " (possible related proptag: " + se.getPossibleProprietaryTag() + ")", se); + LOG.debug("Sentence trace: " + se.getMessage(), se); return null; } catch (Exception e) { if (throwExceptions) { throw new IOException(e); } - LOG.error("Sentence line error: " + line); - LOG.debug("Sentence line error: " + e.getMessage()); + LOG.error("Sentence line error: " + line, e); + LOG.debug("Sentence line error: " + e.getMessage(), e); return null; } } diff --git a/ais-lib-communication/src/main/java/dk/dma/ais/packet/Vsi.java b/ais-lib-communication/src/main/java/dk/dma/ais/packet/Vsi.java new file mode 100644 index 00000000..cafbf3e0 --- /dev/null +++ b/ais-lib-communication/src/main/java/dk/dma/ais/packet/Vsi.java @@ -0,0 +1,61 @@ +package dk.dma.ais.packet; + +import dk.dma.ais.sentence.CommentBlock; +import dk.dma.ais.sentence.EncapsulatedSentence; +import dk.dma.ais.sentence.SentenceException; +import dk.dma.ais.sentence.SentenceLine; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Represents a VSI sentence. + */ +public class Vsi extends EncapsulatedSentence { + private static final Logger LOG = LoggerFactory.getLogger(Vsi.class); + private static final int SIGNAL_STRENGTH_DEFAULT_VALUE = -10000; + + private int signalStrength; + private double latitude; + private double longitude; + + @Override + public int parse(SentenceLine sentenceLine) throws SentenceException { + if (sentenceLine.getPrefix().length() > 0 && CommentBlock.hasCommentBlock(sentenceLine.getPrefix())) { + addSingleCommentBlock(sentenceLine.getPrefix()); + } + + try { + signalStrength = Integer.valueOf(sentenceLine.getFields().get(5)); + } catch (NumberFormatException e) { + signalStrength = SIGNAL_STRENGTH_DEFAULT_VALUE; + LOG.error("Invalid value for signal strength in VSI sentence: [{}]. Using default value [{}]", sentenceLine, SIGNAL_STRENGTH_DEFAULT_VALUE); + } + + return 0; + } + + @Override + public String getEncoded() { + return null; + } + + public int getSignalStrength() { + return signalStrength; + } + + public void setLatitude(double latitude) { + this.latitude = latitude; + } + + public double getLatitude() { + return latitude; + } + + public void setLongitude(double longitude) { + this.longitude = longitude; + } + + public double getLongitude() { + return longitude; + } +} diff --git a/ais-lib-communication/src/test/java/dk/dma/ais/packet/AisPacketParserTest.java b/ais-lib-communication/src/test/java/dk/dma/ais/packet/AisPacketParserTest.java new file mode 100644 index 00000000..94a662c8 --- /dev/null +++ b/ais-lib-communication/src/test/java/dk/dma/ais/packet/AisPacketParserTest.java @@ -0,0 +1,46 @@ +package dk.dma.ais.packet; + +import dk.dma.ais.sentence.SentenceException; +import org.junit.Test; + +import java.util.Date; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.Matchers.closeTo; +import static org.junit.Assert.assertThat; + +public class AisPacketParserTest { + private static final String VSI_SENTENCE = "\\c:1490398110,C:1133,s:P-Helmcken*35\\$AIVSI,P-Helmcken,6,232830,1133,-79,34*0C"; + private static final String VDM_SENTENCE = "\\c:1490398110,C:1133,s:P-Helmcken*35\\!AIVDM,1,1,6,B,15NCn?0P00o:pljKRG57Hgvt26qh,0*64"; + + @Test + public void givenAVsiSentenceWithNoCorrespondingVdm_whenReadLine_thenNullIsReturned() throws SentenceException { + AisPacketParser packetParser = new AisPacketParser(); + + AisPacket aisPacket = packetParser.readLine(VSI_SENTENCE); + + assertThat(aisPacket, is(nullValue())); + } + + @Test + public void givenAVsiSentence_whenReadLine_thenAisPacketContainingVsiDetailsIsReturned() throws SentenceException { + AisPacketParser packetParser = new AisPacketParser(); + + packetParser.readLine(VDM_SENTENCE); + AisPacket aisPacket = packetParser.readLine(VSI_SENTENCE); + + assertThat(aisPacket.isVsi(), is(true)); + assertThat(aisPacket.isValidMessage(), is(true)); + assertThat(aisPacket.getVsi(), is(not(nullValue()))); + assertThat(aisPacket.getVsi().getCommentBlock(), is(not(nullValue()))); + assertThat(aisPacket.getVsi().getCommentBlock().getString("C"), is(equalTo("1133"))); + assertThat(aisPacket.getVsi().getCommentBlock().getString("s"), is(equalTo("P-Helmcken"))); + assertThat(aisPacket.getVsi().getSignalStrength(), is(equalTo(-79))); + assertThat(aisPacket.tryGetPositionTime().getLatitude(), is(closeTo(48.124193, 0.000001))); + assertThat(aisPacket.tryGetPositionTime().getLongitude(), is(closeTo(-123.450625, 0.00001))); + assertThat(aisPacket.getVsi().getTimestamp(), is(equalTo(new Date(1490398110000L)))); + } +} diff --git a/ais-lib-communication/src/test/java/dk/dma/ais/packet/VsiTest.java b/ais-lib-communication/src/test/java/dk/dma/ais/packet/VsiTest.java new file mode 100644 index 00000000..448750a3 --- /dev/null +++ b/ais-lib-communication/src/test/java/dk/dma/ais/packet/VsiTest.java @@ -0,0 +1,48 @@ +package dk.dma.ais.packet; + +import dk.dma.ais.sentence.SentenceException; +import dk.dma.ais.sentence.SentenceLine; +import org.junit.Before; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.junit.Assert.assertThat; + +public class VsiTest { + private static final String VSI_SENTENCE = "\\c:1490398110,C:1133,s:M-Kingsburg*5D\\$AIVSI,M-Kingsburg,4,232830,1133,-111,8*66"; + + private SentenceLine sentenceLine; + private Vsi vsi; + + @Before + public void setUp() throws Exception { + sentenceLine = new SentenceLine(VSI_SENTENCE); + vsi = new Vsi(); + } + + @Test + public void whenParse_thenCommentBlockIsParsed() throws SentenceException { + vsi.parse(sentenceLine); + + assertThat(vsi.getCommentBlock(), is(not(nullValue()))); + assertThat(vsi.getCommentBlock().getString("C"), is(equalTo("1133"))); + assertThat(vsi.getCommentBlock().getString("s"), is(equalTo("M-Kingsburg"))); + } + + @Test + public void whenParse_thenSignalStrengthIsParsed() throws SentenceException { + vsi.parse(sentenceLine); + + assertThat(vsi.getSignalStrength(), is(equalTo(-111))); + } + + @Test + public void givenASentenceWithAnInvalidSignalStrength_whenParse_thenDefaultValueIsUsed() throws SentenceException { + vsi.parse(new SentenceLine("\\c:1497228032,C:1206,s:M-Chebucto*2F\\$AIVSI,M-Chebucto,4,,,,*31")); + + assertThat(vsi.getSignalStrength(), is(equalTo(-10000))); + } +} diff --git a/ais-lib-messages/build.gradle b/ais-lib-messages/build.gradle new file mode 100644 index 00000000..b94e9354 --- /dev/null +++ b/ais-lib-messages/build.gradle @@ -0,0 +1,6 @@ + +description = 'AIS Messages' +dependencies { + compile group: 'dk.dma.enav', name: 'enav-model', version:'0.5' + compile group: 'dk.dma.commons', name: 'dma-commons-util', version:'0.5-SNAPSHOT' +} diff --git a/ais-lib-messages/pom.xml b/ais-lib-messages/pom.xml index 7f0c7b97..349984e1 100755 --- a/ais-lib-messages/pom.xml +++ b/ais-lib-messages/pom.xml @@ -5,7 +5,7 @@ dk.dma.ais.lib ais-parent - 2.4-SNAPSHOT + 2.4-CCG-SNAPSHOT ../pom.xml @@ -25,4 +25,4 @@ - \ No newline at end of file + diff --git a/ais-lib-utils/build.gradle b/ais-lib-utils/build.gradle new file mode 100644 index 00000000..219054db --- /dev/null +++ b/ais-lib-utils/build.gradle @@ -0,0 +1,7 @@ + +description = 'AIS utils' +dependencies { + compile project(':ais-lib-messages') + compile project(':ais-lib-communication') + compile group: 'dk.dma.commons', name: 'dma-commons-app', version:'0.5-SNAPSHOT' +} diff --git a/ais-lib-utils/pom.xml b/ais-lib-utils/pom.xml index 7a65a8c7..ee0d8715 100644 --- a/ais-lib-utils/pom.xml +++ b/ais-lib-utils/pom.xml @@ -5,7 +5,7 @@ dk.dma.ais.lib ais-parent - 2.4-SNAPSHOT + 2.4-CCG-SNAPSHOT ../pom.xml @@ -35,4 +35,4 @@ - \ No newline at end of file + diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..6ccacad8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,34 @@ +allprojects { + apply plugin: 'maven' + + group = 'dk.dma.ais.lib' +version = '2.4-CCG-SNAPSHOT' +} + +subprojects { + apply plugin: 'java' + sourceCompatibility = 1.8 + targetCompatibility = 1.8 + tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' + } + + + repositories { + mavenLocal() + + maven { url "http://repository-dma.forge.cloudbees.com/snapshot/" } + maven { url "http://repository-dma.forge.cloudbees.com/release/" } + maven { url "http://repo.maven.apache.org/maven2" } + } + + + dependencies { + compile group: 'org.slf4j', name: 'slf4j-api', version:'1.7.23' + compile group: 'net.jcip', name: 'jcip-annotations', version:'1.0' + testCompile group: 'org.slf4j', name: 'slf4j-log4j12', version:'1.7.23' + testCompile group: 'junit', name: 'junit', version:'4.12' +} + + +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..ed88a042 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..c583957d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip diff --git a/gradlew b/gradlew new file mode 100755 index 00000000..cccdd3d5 --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..f9553162 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/mvnw b/mvnw new file mode 100755 index 00000000..6ecc150a --- /dev/null +++ b/mvnw @@ -0,0 +1,236 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in $@ +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd new file mode 100644 index 00000000..8bb82754 --- /dev/null +++ b/mvnw.cmd @@ -0,0 +1,146 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%MAVEN_CONFIG% %* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR=""%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# avoid using MAVEN_CMD_LINE_ARGS below since that would loose parameter escaping in %* +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml index ff990f39..676c85f5 100755 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ dk.dma.ais.lib ais-parent - 2.4-SNAPSHOT + 2.4-CCG-SNAPSHOT AIS Parent pom This parent pom for AIS @@ -57,6 +57,30 @@ + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + org.apache.maven.plugins maven-gpg-plugin @@ -117,6 +141,17 @@ + + dma-snapshots + Dma Snapshots Repository + http://repository-dma.forge.cloudbees.com/snapshot/ + + false + + + true + + dma-releases Dma Release Repository diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..8b20ec4e --- /dev/null +++ b/settings.gradle @@ -0,0 +1,10 @@ +rootProject.name = 'ais-parent' +include ':ais-lib-messages' +include ':ais-lib-communication' +include ':ais-lib-utils' +include ':ais-lib-cli' + +project(':ais-lib-messages').projectDir = "$rootDir/ais-lib-messages" as File +project(':ais-lib-communication').projectDir = "$rootDir/ais-lib-communication" as File +project(':ais-lib-utils').projectDir = "$rootDir/ais-lib-utils" as File +project(':ais-lib-cli').projectDir = "$rootDir/ais-lib-cli" as File \ No newline at end of file