diff --git a/modules/com.dbeaver.jdbc.api/pom.xml b/modules/com.dbeaver.jdbc.api/pom.xml index 38b92d5..cc62bfc 100644 --- a/modules/com.dbeaver.jdbc.api/pom.xml +++ b/modules/com.dbeaver.jdbc.api/pom.xml @@ -1,26 +1,55 @@ - - 4.0.0 - - com.dbeaver.common - com.dbeaver.common.modules - 2.2.0-SNAPSHOT - ../pom.xml - - com.dbeaver.jdbc.api - JDBC framework - eclipse-plugin - - - - com.dbeaver.common - org.jkiss.utils - - - - - ${project.basedir}/src/ - + + 4.0.0 + + com.dbeaver.common + com.dbeaver.common.modules + 2.2.0-SNAPSHOT + ../pom.xml + + com.dbeaver.jdbc.api + eclipse-plugin + + JDBC framework + Framework for JDBC drivers development. + https://github.com/dbeaver/dbeaver-common + + + + com.dbeaver.common + org.jkiss.utils + + + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + Serge Rider + serge@dbeaver.com + https://github.com/serge-rider + DBeaver Corp + https://github.com/dbeaver + + + + + scm:git:git@github.com:dbeaver/dbeaver-common.git + scm:git:git@github.com:dbeaver/dbeaver-common.git + git@github.com:dbeaver/dbeaver-common.git + + + + ${project.basedir}/src/ + diff --git a/modules/com.dbeaver.rpc/pom.xml b/modules/com.dbeaver.rpc/pom.xml index 98aa663..23ad5ab 100644 --- a/modules/com.dbeaver.rpc/pom.xml +++ b/modules/com.dbeaver.rpc/pom.xml @@ -1,30 +1,59 @@ - - 4.0.0 - - com.dbeaver.common - com.dbeaver.common.modules - 2.2.0-SNAPSHOT - ../pom.xml - - com.dbeaver.rpc - RPC framework - eclipse-plugin - - - - com.google.code.gson - gson - - - com.dbeaver.common - org.jkiss.utils - - - - - ${project.basedir}/src/ - + + 4.0.0 + + com.dbeaver.common + com.dbeaver.common.modules + 2.2.0-SNAPSHOT + ../pom.xml + + com.dbeaver.rpc + eclipse-plugin + + RPC framework + RPC over HTTP. + https://github.com/dbeaver/dbeaver-common + + + + com.google.code.gson + gson + + + com.dbeaver.common + org.jkiss.utils + + + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + Serge Rider + serge@dbeaver.com + https://github.com/serge-rider + DBeaver Corp + https://github.com/dbeaver + + + + + scm:git:git@github.com:dbeaver/dbeaver-common.git + scm:git:git@github.com:dbeaver/dbeaver-common.git + git@github.com:dbeaver/dbeaver-common.git + + + + ${project.basedir}/src/ + diff --git a/modules/org.jkiss.utils/pom.xml b/modules/org.jkiss.utils/pom.xml index f8ec65a..4b9fdd9 100644 --- a/modules/org.jkiss.utils/pom.xml +++ b/modules/org.jkiss.utils/pom.xml @@ -1,26 +1,54 @@ - - 4.0.0 - - com.dbeaver.common - com.dbeaver.common.modules - 2.2.0-SNAPSHOT - ../pom.xml - - org.jkiss.utils - Common utils - eclipse-plugin + + 4.0.0 + + com.dbeaver.common + com.dbeaver.common.modules + 2.2.0-SNAPSHOT + ../pom.xml + + org.jkiss.utils + eclipse-plugin - - - com.google.code.gson - gson - - + DBeaver Common Utils + Various utilities for DBeaver projects. Similar to commons-utils or guava. + https://github.com/dbeaver/dbeaver-common - - ${project.basedir}/src/ - + + + com.google.code.gson + gson + + + + + + The Apache Software License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0.txt + repo + + + + + + Serge Rider + serge@dbeaver.com + https://github.com/serge-rider + DBeaver Corp + https://github.com/dbeaver + + + + + scm:git:git@github.com:dbeaver/dbeaver-common.git + scm:git:git@github.com:dbeaver/dbeaver-common.git + git@github.com:dbeaver/dbeaver-common.git + + + + ${project.basedir}/src/ + diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java b/modules/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java index d7cbb2e..43f9b1b 100644 --- a/modules/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java +++ b/modules/org.jkiss.utils/src/org/jkiss/utils/CommonUtils.java @@ -987,7 +987,7 @@ public static T findBestCaseAwareMatch(@NotNull Iterable object /** * Groups values into a map of their shared key and a list of matching values using that key. *

- *

Group strings by their first character

+ * Group strings by their first character *
{@code
      * final List values = Arrays.asList("aaa", "abb", "bbb", "bab", "ccc");
      * final Map> groups = group(values, x -> x.charAt(0));
diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/IntKeyMap.java b/modules/org.jkiss.utils/src/org/jkiss/utils/IntKeyMap.java
index b97960e..0b7abee 100644
--- a/modules/org.jkiss.utils/src/org/jkiss/utils/IntKeyMap.java
+++ b/modules/org.jkiss.utils/src/org/jkiss/utils/IntKeyMap.java
@@ -69,7 +69,7 @@ public class IntKeyMap implements Map {
 	transient volatile int modCount;
 
 	/**
-	 * Constructs an empty IntKeyMap with the specified initial
+	 * Constructs an empty IntKeyMap with the specified initial
 	 * capacity and load factor.
 	 *
 	 * @param  initialCapacity The initial capacity.
@@ -98,7 +98,7 @@ public IntKeyMap(int initialCapacity, float loadFactor) {
 	}
 
 	/**
-	 * Constructs an empty IntKeyMap with the specified initial
+	 * Constructs an empty IntKeyMap with the specified initial
 	 * capacity and the default load factor (0.75).
 	 *
 	 * @param  initialCapacity the initial capacity.
@@ -109,7 +109,7 @@ public IntKeyMap(int initialCapacity) {
 	}
 
 	/**
-	 * Constructs an empty IntKeyMap with the default initial capacity
+	 * Constructs an empty IntKeyMap with the default initial capacity
 	 * (16) and the default load factor (0.75).
 	 */
 	public IntKeyMap() {
@@ -145,9 +145,9 @@ public int size() {
 	}
 
 	/**
-	 * Returns true if this map contains no key-value mappings.
+	 * Returns true if this map contains no key-value mappings.
 	 *
-	 * @return true if this map contains no key-value mappings.
+	 * @return true if this map contains no key-value mappings.
 	 */
 	@Override
     public boolean isEmpty()
@@ -163,15 +163,15 @@ public boolean containsKey(Object key)
 
 	/**
 	 * Returns the value to which the specified key is mapped in this identity
-	 * hash map, or null if the map contains no mapping for this key.
-	 * A return value of null does not necessarily indicate
+	 * hash map, or null if the map contains no mapping for this key.
+	 * A return value of null does not necessarily indicate
 	 * that the map contains no mapping for the key; it is also possible that
-	 * the map explicitly maps the key to null. The
-	 * containsKey method may be used to distinguish these two cases.
+	 * the map explicitly maps the key to null. The
+	 * containsKey method may be used to distinguish these two cases.
 	 *
 	 * @param   key the key whose associated value is to be returned.
 	 * @return  the value to which this map maps the specified key, or
-	 *          null if the map contains no mapping for this key.
+	 *          null if the map contains no mapping for this key.
 	 * @see #put(int, Object)
 	 */
 	public VALUE get(int key) {
@@ -188,7 +188,7 @@ public VALUE get(int key) {
 	}
 
 	/**
-	 * Returns true if this map contains a mapping for the
+	 * Returns true if this map contains a mapping for the
 	 * specified key.
 	 */
 	public boolean containsKey(int key)
@@ -225,10 +225,10 @@ IntEntry getEntry(int key) {
 	 *
 	 * @param key key with which the specified value is to be associated.
 	 * @param value value to be associated with the specified key.
-	 * @return previous value associated with specified key, or null
-	 *	       if there was no mapping for key.  A null return can
+	 * @return previous value associated with specified key, or null
+	 *	       if there was no mapping for key.  A null return can
 	 *	       also indicate that the IntKeyMap previously associated
-	 *	       null with the specified key.
+	 *	       null with the specified key.
 	 */
 	public VALUE put(int key, VALUE value) {
 		int hash = hash(key);
@@ -280,7 +280,7 @@ void putAllForCreate(IntKeyMap m) {
 	}
 
 	/**
-	 * Rehashes the contents of this map into a new IntKeyMap instance
+	 * Rehashes the contents of this map into a new IntKeyMap instance
 	 * with a larger capacity. This method is called automatically when the
 	 * number of keys in this map exceeds its capacity and load factor.
 	 *
@@ -355,9 +355,9 @@ public void putAll(IntKeyMap t) {
 	 * Removes the mapping for this key from this map if present.
 	 *
 	 * @param  key key whose mapping is to be removed from the map.
-	 * @return previous value associated with specified key, or null
-	 *	       if there was no mapping for key.  A null return can
-	 *	       also indicate that the map previously associated null
+	 * @return previous value associated with specified key, or null
+	 *	       if there was no mapping for key.  A null return can
+	 *	       also indicate that the map previously associated null
 	 *	       with the specified key.
 	 */
 	public VALUE remove(int key) {
@@ -438,11 +438,11 @@ public void clear() {
 	}
 
 	/**
-	 * Returns true if this map maps one or more keys to the
+	 * Returns true if this map maps one or more keys to the
 	 * specified value.
 	 *
 	 * @param value value whose presence in this map is to be tested.
-	 * @return true if this map maps one or more keys to the
+	 * @return true if this map maps one or more keys to the
 	 *         specified value.
 	 */
 	@Override
@@ -687,10 +687,10 @@ Iterator> newEntryIterator()
 	 * Returns a set view of the keys contained in this map.  The set is
 	 * backed by the map, so changes to the map are reflected in the set, and
 	 * vice-versa.  The set supports element removal, which removes the
-	 * corresponding mapping from this map, via the Iterator.remove,
-	 * Set.remove, removeAll, retainAll, and
-	 * clear operations.  It does not support the add or
-	 * addAll operations.
+	 * corresponding mapping from this map, via the Iterator.remove,
+	 * Set.remove, removeAll, retainAll, and
+	 * clear operations.  It does not support the add or
+	 * addAll operations.
 	 *
 	 * @return a set view of the keys contained in this map.
 	 */
@@ -736,9 +736,9 @@ public void clear() {
 	 * collection is backed by the map, so changes to the map are reflected in
 	 * the collection, and vice-versa.  The collection supports element
 	 * removal, which removes the corresponding mapping from this map, via the
-	 * Iterator.remove, Collection.remove,
-	 * removeAll, retainAll, and clear operations.
-	 * It does not support the add or addAll operations.
+	 * Iterator.remove, Collection.remove,
+	 * removeAll, retainAll, and clear operations.
+	 * It does not support the add or addAll operations.
 	 *
 	 * @return a collection view of the values contained in this map.
 	 */
diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/LongKeyMap.java b/modules/org.jkiss.utils/src/org/jkiss/utils/LongKeyMap.java
index 40807b6..80473e8 100644
--- a/modules/org.jkiss.utils/src/org/jkiss/utils/LongKeyMap.java
+++ b/modules/org.jkiss.utils/src/org/jkiss/utils/LongKeyMap.java
@@ -68,7 +68,7 @@ public class LongKeyMap implements Map {
 	transient volatile int modCount;
 
 	/**
-	 * Constructs an empty LongKeyMap with the specified initial
+	 * Constructs an empty LongKeyMap with the specified initial
 	 * capacity and load factor.
 	 *
 	 * @param  initialCapacity The initial capacity.
@@ -97,7 +97,7 @@ public LongKeyMap(int initialCapacity, float loadFactor) {
 	}
 
 	/**
-	 * Constructs an empty LongKeyMap with the specified initial
+	 * Constructs an empty LongKeyMap with the specified initial
 	 * capacity and the default load factor (0.75).
 	 *
 	 * @param  initialCapacity the initial capacity.
@@ -108,7 +108,7 @@ public LongKeyMap(int initialCapacity) {
 	}
 
 	/**
-	 * Constructs an empty LongKeyMap with the default initial capacity
+	 * Constructs an empty LongKeyMap with the default initial capacity
 	 * (16) and the default load factor (0.75).
 	 */
 	public LongKeyMap() {
@@ -144,9 +144,9 @@ public int size() {
 	}
 
 	/**
-	 * Returns true if this map contains no key-value mappings.
+	 * Returns true if this map contains no key-value mappings.
 	 *
-	 * @return true if this map contains no key-value mappings.
+	 * @return true if this map contains no key-value mappings.
 	 */
 	@Override
     public boolean isEmpty()
@@ -162,15 +162,15 @@ public boolean containsKey(Object key)
 
 	/**
 	 * Returns the value to which the specified key is mapped in this identity
-	 * hash map, or null if the map contains no mapping for this key.
-	 * A return value of null does not necessarily indicate
+	 * hash map, or null if the map contains no mapping for this key.
+	 * A return value of null does not necessarily indicate
 	 * that the map contains no mapping for the key; it is also possible that
-	 * the map explicitly maps the key to null. The
-	 * containsKey method may be used to distinguish these two cases.
+	 * the map explicitly maps the key to null. The
+	 * containsKey method may be used to distinguish these two cases.
 	 *
 	 * @param   key the key whose associated value is to be returned.
 	 * @return  the value to which this map maps the specified key, or
-	 *          null if the map contains no mapping for this key.
+	 *          null if the map contains no mapping for this key.
 	 * @see #put(long, Object)
 	 */
 	public VALUE get(long key) {
@@ -187,7 +187,7 @@ public VALUE get(long key) {
 	}
 
 	/**
-	 * Returns true if this map contains a mapping for the
+	 * Returns true if this map contains a mapping for the
 	 * specified key.
 	 */
 	public boolean containsKey(long key)
@@ -224,10 +224,10 @@ LongEntry getEntry(long key) {
 	 *
 	 * @param key key with which the specified value is to be associated.
 	 * @param value value to be associated with the specified key.
-	 * @return previous value associated with specified key, or null
-	 *	       if there was no mapping for key.  A null return can
+	 * @return previous value associated with specified key, or null
+	 *	       if there was no mapping for key.  A null return can
 	 *	       also indicate that the LongKeyMap previously associated
-	 *	       null with the specified key.
+	 *	       null with the specified key.
 	 */
 	public VALUE put(long key, VALUE value) {
 		int hash = hash(key);
@@ -279,7 +279,7 @@ void putAllForCreate(LongKeyMap m) {
 	}
 
 	/**
-	 * Rehashes the contents of this map into a new LongKeyMap instance
+	 * Rehashes the contents of this map into a new LongKeyMap instance
 	 * with a larger capacity. This method is called automatically when the
 	 * number of keys in this map exceeds its capacity and load factor.
 	 *
@@ -354,9 +354,9 @@ public void putAll(LongKeyMap t) {
 	 * Removes the mapping for this key from this map if present.
 	 *
 	 * @param  key key whose mapping is to be removed from the map.
-	 * @return previous value associated with specified key, or null
-	 *	       if there was no mapping for key.  A null return can
-	 *	       also indicate that the map previously associated null
+	 * @return previous value associated with specified key, or null
+	 *	       if there was no mapping for key.  A null return can
+	 *	       also indicate that the map previously associated null
 	 *	       with the specified key.
 	 */
 	public VALUE remove(long key) {
@@ -437,11 +437,11 @@ public void clear() {
 	}
 
 	/**
-	 * Returns true if this map maps one or more keys to the
+	 * Returns true if this map maps one or more keys to the
 	 * specified value.
 	 *
 	 * @param value value whose presence in this map is to be tested.
-	 * @return true if this map maps one or more keys to the
+	 * @return true if this map maps one or more keys to the
 	 *         specified value.
 	 */
 	@Override
@@ -686,10 +686,10 @@ Iterator> newEntryIterator()
 	 * Returns a set view of the keys contained in this map.  The set is
 	 * backed by the map, so changes to the map are reflected in the set, and
 	 * vice-versa.  The set supports element removal, which removes the
-	 * corresponding mapping from this map, via the Iterator.remove,
-	 * Set.remove, removeAll, retainAll, and
-	 * clear operations.  It does not support the add or
-	 * addAll operations.
+	 * corresponding mapping from this map, via the Iterator.remove,
+	 * Set.remove, removeAll, retainAll, and
+	 * clear operations.  It does not support the add or
+	 * addAll operations.
 	 *
 	 * @return a set view of the keys contained in this map.
 	 */
@@ -735,9 +735,9 @@ public void clear() {
 	 * collection is backed by the map, so changes to the map are reflected in
 	 * the collection, and vice-versa.  The collection supports element
 	 * removal, which removes the corresponding mapping from this map, via the
-	 * Iterator.remove, Collection.remove,
-	 * removeAll, retainAll, and clear operations.
-	 * It does not support the add or addAll operations.
+	 * Iterator.remove, Collection.remove,
+	 * removeAll, retainAll, and clear operations.
+	 * It does not support the add or addAll operations.
 	 *
 	 * @return a collection view of the values contained in this map.
 	 */
diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReader.java b/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReader.java
index 9439cc4..ca60728 100644
--- a/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReader.java
+++ b/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReader.java
@@ -44,14 +44,14 @@ public class CSVReader implements Closeable {
      * The default line to start reading.
      */
     public static final int DEFAULT_SKIP_LINES = 0;
-    private CSVParser parser;
-    private int skipLines;
-    private BufferedReader br;
-    private LineReader lineReader;
+    private final CSVParser parser;
+    private final int skipLines;
+    private final BufferedReader br;
+    private final LineReader lineReader;
     private boolean hasNext = true;
     private boolean linesSkiped;
-    private boolean keepCR;
-    private boolean verifyReader;
+    private final boolean keepCR;
+    private final boolean verifyReader;
 
     /**
      * Constructs CSVReader using a comma for the separator.
@@ -359,17 +359,17 @@ public void close() throws IOException {
 
     /**
      * Returns if the CSVReader will verify the reader before each read.
-     * 

+ *

* By default the value is true which is the functionality for version 3.0. * If set to false the reader is always assumed ready to read - this is the functionality * for version 2.4 and before. - *

+ *

* The reason this method was needed was that certain types of Readers would return * false for its ready() method until a read was done (namely readers created using Channels). * This caused opencsv not to read from those readers. + * See https://sourceforge.net/p/opencsv/bugs/108/ * * @return true if CSVReader will verify the reader before reads. False otherwise. - * @link https://sourceforge.net/p/opencsv/bugs/108/ */ public boolean verifyReader() { return this.verifyReader; diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReaderNullFieldIndicator.java b/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReaderNullFieldIndicator.java index 426d01a..0966ebd 100644 --- a/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReaderNullFieldIndicator.java +++ b/modules/org.jkiss.utils/src/org/jkiss/utils/csv/CSVReaderNullFieldIndicator.java @@ -26,7 +26,7 @@ /** * Enumeration used to tell the CSVParser what to consider null. - *

+ *

* EMPTY_SEPARATORS - two sequential separators are null. * EMPTY_QUOTES - two sequential quotes are null * BOTH - both are null diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/csv/LineReader.java b/modules/org.jkiss.utils/src/org/jkiss/utils/csv/LineReader.java index f0231a7..d47e5a5 100644 --- a/modules/org.jkiss.utils/src/org/jkiss/utils/csv/LineReader.java +++ b/modules/org.jkiss.utils/src/org/jkiss/utils/csv/LineReader.java @@ -31,7 +31,7 @@ * This class was created for issue #106 (https://sourceforge.net/p/opencsv/bugs/106/) where * carriage returns were being removed. This class allows the user to determine if they wish to keep or * remove them from the data being read. - *

+ *

* Created by scott on 2/19/15. */ diff --git a/modules/org.jkiss.utils/src/org/jkiss/utils/xml/XMLUtils.java b/modules/org.jkiss.utils/src/org/jkiss/utils/xml/XMLUtils.java index 6aa88c4..0185a96 100644 --- a/modules/org.jkiss.utils/src/org/jkiss/utils/xml/XMLUtils.java +++ b/modules/org.jkiss.utils/src/org/jkiss/utils/xml/XMLUtils.java @@ -236,7 +236,7 @@ public static boolean isValidXMLChar(char c) { } /** - * Encodes a char to XML-valid form replacing &,',",<,> with special XML encoding. + * Encodes a char to XML-valid form replacing &,',",<,> with special XML encoding. * * @param ch char to convert * @return XML-encoded text diff --git a/modules/pom.xml b/modules/pom.xml index ac58854..beacb0b 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -10,9 +10,12 @@ ../ com.dbeaver.common.modules - Common modules pom + Common modules + Common modules + https://github.com/dbeaver/dbeaver-common + org.jkiss.utils com.dbeaver.jdbc.api diff --git a/pom.xml b/pom.xml index 57071ca..fc48504 100644 --- a/pom.xml +++ b/pom.xml @@ -16,9 +16,105 @@ DBeaver Common dependencies DBeaver Common Modules + https://github.com/dbeaver/dbeaver-common + + + scm:git:git@github.com:dbeaver/dbeaver-common.git + scm:git:git@github.com:dbeaver/dbeaver-common.git + git@github.com:dbeaver/dbeaver-common.git + + + + github + https://github.com/dbeaver/dbeaver/issues + + modules + + + + sonatypeDeploy + + + + org.sonatype.central + central-publishing-maven-plugin + true + + central + false + validated + com.dbeaver.common.modules,com.dbeaver.common.main + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + --pinentry-mode + loopback + + + + + + + + org.apache.maven.plugins + maven-release-plugin + + v@{project.version} + SemVerVersionPolicy + + + + + + + + gpg-key-1 + + ${SONATYPE_GPG_KEY_ID} + ${SONATYPE_GPG_SECRET} + + + + + diff --git a/root/pom.xml b/root/pom.xml index a7cdeb8..8b09366 100644 --- a/root/pom.xml +++ b/root/pom.xml @@ -11,6 +11,11 @@ DBeaver build root DBeaver build root module + + DBeaver Corp + https://dbeaver.com + + 4.0.9 2024-09 @@ -48,6 +53,9 @@ 2.5.1 3.3 3.0.0-M5 + 3.3.0 + 3.6.3 + 3.1.0 5.11.0 1.11.0 @@ -61,12 +69,12 @@ com.dbeaver.common org.jkiss.utils - ${dbeaver.common.version} + 2.2.0-SNAPSHOT com.dbeaver.common com.dbeaver.jdbc.api - ${dbeaver.common.version} + 2.2.0-SNAPSHOT org.springframework.boot @@ -210,6 +218,33 @@ maven-failsafe-plugin ${maven-failsafe-plugin.version} + + org.apache.maven.plugins + maven-source-plugin + ${maven-source-plugin.version} + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg-plugin.version} + + + org.apache.maven.plugins + maven-release-plugin + 3.1.1 + + + org.sonatype.central + central-publishing-maven-plugin + 0.6.0 + + + org.junit.jupiter junit-jupiter-api @@ -225,7 +260,7 @@ junit-platform-runner ${junit-platform-version} - + org.eclipse.tycho tycho-p2-plugin @@ -253,6 +288,7 @@ + org.eclipse.tycho