Skip to content

Commit

Permalink
DRILL-6349: Drill JDBC driver fails on Java 1.9+ with NoClassDefFound…
Browse files Browse the repository at this point in the history
…Error: sun/misc/VM

closes #1446
  • Loading branch information
oleg-zinovev authored and vvysotskyi committed Nov 26, 2018
1 parent 6ecaed7 commit 639be6c
Show file tree
Hide file tree
Showing 24 changed files with 123 additions and 68 deletions.
Expand Up @@ -27,6 +27,7 @@
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;


import io.netty.util.internal.PlatformDependent;
import org.apache.drill.common.exceptions.DrillConfigurationException; import org.apache.drill.common.exceptions.DrillConfigurationException;
import org.apache.drill.common.exceptions.UserException; import org.apache.drill.common.exceptions.UserException;
import org.apache.drill.common.scanner.ClassPathScanner; import org.apache.drill.common.scanner.ClassPathScanner;
Expand All @@ -46,7 +47,7 @@ public class DrillConfig extends NestedConfig {
private final ImmutableList<String> startupArguments; private final ImmutableList<String> startupArguments;


@SuppressWarnings("restriction") @SuppressWarnings("restriction")
private static final long MAX_DIRECT_MEMORY = sun.misc.VM.maxDirectMemory(); private static final long MAX_DIRECT_MEMORY = PlatformDependent.maxDirectMemory();


@VisibleForTesting @VisibleForTesting
public DrillConfig(Config config) { public DrillConfig(Config config) {
Expand Down
3 changes: 2 additions & 1 deletion contrib/storage-jdbc/pom.xml
Expand Up @@ -104,7 +104,7 @@
<!-- Because the JDBC tests are somewhat heavyweight, we only run them in the 'verify' phase --> <!-- Because the JDBC tests are somewhat heavyweight, we only run them in the 'verify' phase -->
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId> <artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version> <version>2.22.0</version>
<configuration> <configuration>
<forkCount combine.self="override">1</forkCount> <forkCount combine.self="override">1</forkCount>
<systemPropertyVariables> <systemPropertyVariables>
Expand All @@ -115,6 +115,7 @@
<includes> <includes>
<include>**/*IT.java</include> <include>**/*IT.java</include>
</includes> </includes>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
Expand Down
11 changes: 11 additions & 0 deletions distribution/src/resources/drill-config.sh
Expand Up @@ -302,6 +302,17 @@ export DRILLBIT_CODE_CACHE_SIZE=${DRILLBIT_CODE_CACHE_SIZE:-"1G"}
export DRILLBIT_OPTS="-Xms$DRILL_HEAP -Xmx$DRILL_HEAP -XX:MaxDirectMemorySize=$DRILL_MAX_DIRECT_MEMORY" export DRILLBIT_OPTS="-Xms$DRILL_HEAP -Xmx$DRILL_HEAP -XX:MaxDirectMemorySize=$DRILL_MAX_DIRECT_MEMORY"
export DRILLBIT_OPTS="$DRILLBIT_OPTS -XX:ReservedCodeCacheSize=$DRILLBIT_CODE_CACHE_SIZE -Ddrill.exec.enable-epoll=false" export DRILLBIT_OPTS="$DRILLBIT_OPTS -XX:ReservedCodeCacheSize=$DRILLBIT_CODE_CACHE_SIZE -Ddrill.exec.enable-epoll=false"


# Check that java is newer than 1.8
"$JAVA" -version 2>&1 | grep "version" | egrep -e "1\.8" > /dev/null
if [ $? -gt 0 ]; then
# Allow reflective access on Java 9+
export DRILLBIT_OPTS="$DRILLBIT_OPTS --add-opens java.base/java.lang=ALL-UNNAMED"
export DRILLBIT_OPTS="$DRILLBIT_OPTS --add-opens java.base/sun.nio.ch=ALL-UNNAMED"
export DRILLBIT_OPTS="$DRILLBIT_OPTS --add-opens java.base/java.nio=ALL-UNNAMED"
export DRILLBIT_OPTS="$DRILLBIT_OPTS --add-opens java.security.jgss/sun.security.krb5=ALL-UNNAMED"
export DRILLBIT_OPTS="$DRILLBIT_OPTS --illegal-access=permit"
fi



# Under YARN, the log directory is usually YARN-provided. Replace any # Under YARN, the log directory is usually YARN-provided. Replace any
# value that may have been set in drill-env.sh. # value that may have been set in drill-env.sh.
Expand Down
12 changes: 12 additions & 0 deletions distribution/src/resources/sqlline.bat
Expand Up @@ -205,6 +205,18 @@ set DRILL_SHELL_JAVA_OPTS=%DRILL_SHELL_JAVA_OPTS% -Dlog.path="%DRILL_LOG_DIR%\sq
SET JAVA_CMD=%JAVA_HOME%\bin\%JAVA_EXE% SET JAVA_CMD=%JAVA_HOME%\bin\%JAVA_EXE%
if "%JAVA_HOME%" == "" (set JAVA_CMD=%JAVA_EXE%) if "%JAVA_HOME%" == "" (set JAVA_CMD=%JAVA_EXE%)
set ERROR_CODE=0 set ERROR_CODE=0

rem Check that java is newer than 1.8
"%JAVA_CMD%" -version 2>&1 | findstr "1.8" > nul 2>&1
if errorlevel 1 (
rem allow reflective access on Java 9+
set DRILL_SHELL_JAVA_OPTS=%DRILL_SHELL_JAVA_OPTS% --add-opens java.base/java.lang=ALL-UNNAMED
set DRILL_SHELL_JAVA_OPTS=%DRILL_SHELL_JAVA_OPTS% --add-opens java.base/sun.nio.ch=ALL-UNNAMED
set DRILL_SHELL_JAVA_OPTS=%DRILL_SHELL_JAVA_OPTS% --add-opens java.base/java.nio=ALL-UNNAMED
set DRILL_SHELL_JAVA_OPTS=%DRILL_SHELL_JAVA_OPTS% --add-opens java.security.jgss/sun.security.krb5=ALL-UNNAMED
set DRILL_SHELL_JAVA_OPTS=%DRILL_SHELL_JAVA_OPTS% --illegal-access=permit
)

set SQLLINE_CALL=sqlline.SqlLine -ac org.apache.drill.exec.client.DrillSqlLineApplication -d org.apache.drill.jdbc.Driver set SQLLINE_CALL=sqlline.SqlLine -ac org.apache.drill.exec.client.DrillSqlLineApplication -d org.apache.drill.jdbc.Driver
if NOT "test%QUERY%"=="test" ( if NOT "test%QUERY%"=="test" (
echo %QUERY% | "%JAVA_CMD%" %DRILL_SHELL_JAVA_OPTS% %DRILL_JAVA_OPTS% -cp "%DRILL_CP%" %SQLLINE_CALL% %DRILL_ARGS% echo %QUERY% | "%JAVA_CMD%" %DRILL_SHELL_JAVA_OPTS% %DRILL_JAVA_OPTS% -cp "%DRILL_CP%" %SQLLINE_CALL% %DRILL_ARGS%
Expand Down
20 changes: 7 additions & 13 deletions exec/java-exec/pom.xml
Expand Up @@ -64,28 +64,22 @@
<version>${kerby.version}</version> <version>${kerby.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- <dependency> -->
<!-- <groupId>org.ow2.asm</groupId> -->
<!-- <artifactId>asm-util</artifactId> -->
<!-- <version>5.0.3</version> -->
<!-- </dependency> -->
<dependency> <dependency>
<groupId>org.ow2.asm</groupId> <groupId>org.ow2.asm</groupId>
<artifactId>asm-debug-all</artifactId> <artifactId>asm-commons</artifactId>
<version>5.0.3</version> <version>${asm.version}</version>
<!-- <scope>test</scope> --> </dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-util</artifactId>
<version>${asm.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.drill.contrib.data</groupId> <groupId>org.apache.drill.contrib.data</groupId>
<artifactId>tpch-sample-data</artifactId> <artifactId>tpch-sample-data</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- <dependency> -->
<!-- <groupId>org.ow2.asm</groupId> -->
<!-- <artifactId>asm-commons</artifactId> -->
<!-- <version>5.0.3</version> -->
<!-- </dependency> -->
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId> <artifactId>commons-pool2</artifactId>
Expand Down
Expand Up @@ -24,5 +24,5 @@ public class CompilationConfig {
* Never use asm.Opcodes values directly in calls that require them. Use ASM_OPCODES * Never use asm.Opcodes values directly in calls that require them. Use ASM_OPCODES
* instead, so that we can change it here once for all references. * instead, so that we can change it here once for all references.
*/ */
public final static int ASM_API_VERSION = Opcodes.ASM5; public final static int ASM_API_VERSION = Opcodes.ASM7;
} }
Expand Up @@ -19,6 +19,7 @@


import java.util.List; import java.util.List;


import org.apache.drill.exec.compile.CompilationConfig;
import org.objectweb.asm.Opcodes; import org.objectweb.asm.Opcodes;
import org.objectweb.asm.Type; import org.objectweb.asm.Type;
import org.objectweb.asm.tree.AbstractInsnNode; import org.objectweb.asm.tree.AbstractInsnNode;
Expand All @@ -40,6 +41,7 @@ public class ReplacingInterpreter extends BasicInterpreter {
private final List<ReplacingBasicValue> valueList; private final List<ReplacingBasicValue> valueList;


public ReplacingInterpreter(final String className, final List<ReplacingBasicValue> valueList) { public ReplacingInterpreter(final String className, final List<ReplacingBasicValue> valueList) {
super(CompilationConfig.ASM_API_VERSION);
this.className = className; this.className = className;
this.valueList = valueList; this.valueList = valueList;
} }
Expand Down
Expand Up @@ -161,7 +161,7 @@ public static MappingSet getDefaultMapping() {
// from the JDK Modifier values to the JCodeModel JMod values: the // from the JDK Modifier values to the JCodeModel JMod values: the
// values are different. // values are different.


int mods = JMod.PRIVATE + JMod.FINAL; int mods = JMod.FINAL;
if ((innerClass.getModifiers() & Modifier.STATIC) != 0) { if ((innerClass.getModifiers() & Modifier.STATIC) != 0) {
mods += JMod.STATIC; mods += JMod.STATIC;
} }
Expand Down Expand Up @@ -370,7 +370,7 @@ private boolean createNestedClass() {
// all new fields will be declared in the class from innerClassGenerator // all new fields will be declared in the class from innerClassGenerator
if (innerClassGenerator == null) { if (innerClassGenerator == null) {
try { try {
JDefinedClass innerClazz = clazz._class(JMod.PRIVATE, clazz.name() + "0"); JDefinedClass innerClazz = clazz._class(JMod.NONE, clazz.name() + "0");
innerClassGenerator = new ClassGenerator<>(codeGenerator, mappings, sig, evaluationVisitor, innerClazz, model, optionManager); innerClassGenerator = new ClassGenerator<>(codeGenerator, mappings, sig, evaluationVisitor, innerClazz, model, optionManager);
} catch (JClassAlreadyExistsException e) { } catch (JClassAlreadyExistsException e) {
throw new DrillRuntimeException(e); throw new DrillRuntimeException(e);
Expand Down
Expand Up @@ -180,7 +180,7 @@ protected void createPartitionSublists() {


// build a list of DFSDirPartitionLocation. // build a list of DFSDirPartitionLocation.
for (final List<String> dirs : dirToFileMap.keySet()) { for (final List<String> dirs : dirToFileMap.keySet()) {
locations.add( new DFSDirPartitionLocation((String [])dirs.toArray(), dirToFileMap.get(dirs))); locations.add( new DFSDirPartitionLocation(dirs.toArray(new String[dirs.size()]), dirToFileMap.get(dirs)));
} }


locationSuperList = Lists.partition(locations, PartitionDescriptor.PARTITION_BATCH_SIZE); locationSuperList = Lists.partition(locations, PartitionDescriptor.PARTITION_BATCH_SIZE);
Expand Down
Expand Up @@ -19,19 +19,16 @@


import mockit.Mock; import mockit.Mock;
import mockit.MockUp; import mockit.MockUp;
import mockit.integration.junit4.JMockit;
import org.apache.calcite.util.Util; import org.apache.calcite.util.Util;
import org.apache.drill.common.exceptions.UserRemoteException; import org.apache.drill.common.exceptions.UserRemoteException;
import org.apache.drill.test.BaseTestQuery; import org.apache.drill.test.BaseTestQuery;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;


import java.nio.charset.Charset; import java.nio.charset.Charset;


import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;


@RunWith(JMockit.class)
public class TestUtf8SupportInQueryString extends BaseTestQuery { public class TestUtf8SupportInQueryString extends BaseTestQuery {


@Test @Test
Expand Down
Expand Up @@ -38,17 +38,13 @@
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
import org.junit.rules.ExpectedException; import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;


import org.apache.drill.shaded.guava.com.google.common.collect.Lists; import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
import org.apache.drill.shaded.guava.com.google.common.collect.Maps; import org.apache.drill.shaded.guava.com.google.common.collect.Maps;


import mockit.integration.junit4.JMockit;

import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.hasItem;


@RunWith(JMockit.class)
@Category({UnlikelyTest.class, SqlFunctionTest.class}) @Category({UnlikelyTest.class, SqlFunctionTest.class})
public class TestCastFunctions extends BaseTestQuery { public class TestCastFunctions extends BaseTestQuery {


Expand Down
Expand Up @@ -19,7 +19,6 @@


import org.apache.drill.shaded.guava.com.google.common.base.Charsets; import org.apache.drill.shaded.guava.com.google.common.base.Charsets;
import org.apache.drill.shaded.guava.com.google.common.io.Files; import org.apache.drill.shaded.guava.com.google.common.io.Files;
import mockit.integration.junit4.JMockit;
import org.apache.drill.categories.SqlFunctionTest; import org.apache.drill.categories.SqlFunctionTest;
import org.apache.drill.categories.UnlikelyTest; import org.apache.drill.categories.UnlikelyTest;
import org.apache.drill.common.util.DrillFileUtils; import org.apache.drill.common.util.DrillFileUtils;
Expand All @@ -37,12 +36,10 @@
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import java.util.List; import java.util.List;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;


@RunWith(JMockit.class)
@Category({UnlikelyTest.class, SqlFunctionTest.class}) @Category({UnlikelyTest.class, SqlFunctionTest.class})
public class TestDateFunctions extends PopUnitTestBase { public class TestDateFunctions extends PopUnitTestBase {


Expand Down
Expand Up @@ -17,15 +17,13 @@
*/ */
package org.apache.drill.exec.fn.impl.testing; package org.apache.drill.exec.fn.impl.testing;


import mockit.integration.junit4.JMockit;
import org.apache.drill.test.BaseTestQuery; import org.apache.drill.test.BaseTestQuery;
import org.apache.drill.categories.SqlFunctionTest; import org.apache.drill.categories.SqlFunctionTest;
import org.apache.drill.categories.UnlikelyTest; import org.apache.drill.categories.UnlikelyTest;
import org.apache.drill.common.exceptions.UserException; import org.apache.drill.common.exceptions.UserException;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
Expand All @@ -37,7 +35,6 @@
import static org.hamcrest.CoreMatchers.startsWith; import static org.hamcrest.CoreMatchers.startsWith;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;


@RunWith(JMockit.class)
@Category({UnlikelyTest.class, SqlFunctionTest.class}) @Category({UnlikelyTest.class, SqlFunctionTest.class})
public class TestDateConversions extends BaseTestQuery { public class TestDateConversions extends BaseTestQuery {


Expand Down
Expand Up @@ -19,19 +19,16 @@


import org.apache.drill.shaded.guava.com.google.common.base.Joiner; import org.apache.drill.shaded.guava.com.google.common.base.Joiner;
import org.apache.drill.shaded.guava.com.google.common.collect.Lists; import org.apache.drill.shaded.guava.com.google.common.collect.Lists;
import mockit.integration.junit4.JMockit;
import org.apache.drill.PlanTestBase; import org.apache.drill.PlanTestBase;
import org.apache.drill.categories.SqlTest; import org.apache.drill.categories.SqlTest;
import org.apache.drill.exec.planner.physical.PlannerSettings; import org.apache.drill.exec.planner.physical.PlannerSettings;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.junit.experimental.categories.Category; import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import java.io.File; import java.io.File;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.List; import java.util.List;


@RunWith(JMockit.class)
@Category(SqlTest.class) @Category(SqlTest.class)
public class TestConstantFolding extends PlanTestBase { public class TestConstantFolding extends PlanTestBase {


Expand Down
Expand Up @@ -280,7 +280,7 @@ public void testCreateViewInWSWithNoPermissionsForQueryUser() throws Exception {


final String query = "CREATE VIEW " + viewName + " AS SELECT " + final String query = "CREATE VIEW " + viewName + " AS SELECT " +
"c_custkey, c_nationkey FROM cp.`tpch/customer.parquet` ORDER BY c_custkey;"; "c_custkey, c_nationkey FROM cp.`tpch/customer.parquet` ORDER BY c_custkey;";
final String expErrorMsg = "PERMISSION ERROR: Permission denied: user=drillTestUser2, access=WRITE, inode=\"/drill_test_grp_0_755/"; final String expErrorMsg = "PERMISSION ERROR: Permission denied: user=drillTestUser2, access=WRITE, inode=\"/drill_test_grp_0_755";
errorMsgTestHelper(query, expErrorMsg); errorMsgTestHelper(query, expErrorMsg);


// SHOW TABLES is expected to return no records as view creation fails above. // SHOW TABLES is expected to return no records as view creation fails above.
Expand Down Expand Up @@ -351,7 +351,7 @@ public void testCreateTableInWSWithNoPermissionsForQueryUser() throws Exception


thrown.expect(UserRemoteException.class); thrown.expect(UserRemoteException.class);
thrown.expectMessage(containsString("Permission denied: user=drillTestUser2, " + thrown.expectMessage(containsString("Permission denied: user=drillTestUser2, " +
"access=WRITE, inode=\"/drill_test_grp_0_755/")); "access=WRITE, inode=\"/drill_test_grp_0_755"));


test("CREATE TABLE %s AS SELECT c_custkey, c_nationkey " + test("CREATE TABLE %s AS SELECT c_custkey, c_nationkey " +
"FROM cp.`tpch/customer.parquet` ORDER BY c_custkey", tableName); "FROM cp.`tpch/customer.parquet` ORDER BY c_custkey", tableName);
Expand Down
Expand Up @@ -56,16 +56,12 @@
import org.apache.drill.test.TestBuilder; import org.apache.drill.test.TestBuilder;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;


import org.apache.drill.shaded.guava.com.google.common.collect.Lists; import org.apache.drill.shaded.guava.com.google.common.collect.Lists;


import mockit.integration.junit4.JMockit;

/** /**
* Unit tests for Avro record reader. * Unit tests for Avro record reader.
*/ */
@RunWith(JMockit.class)
public class AvroFormatTest extends BaseTestQuery { public class AvroFormatTest extends BaseTestQuery {


// XXX // XXX
Expand Down
Expand Up @@ -17,7 +17,6 @@
*/ */
package org.apache.drill.exec.vector.complex.writer; package org.apache.drill.exec.vector.complex.writer;


import mockit.integration.junit4.JMockit;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;


import java.nio.file.Files; import java.nio.file.Files;
Expand All @@ -30,9 +29,7 @@
import org.junit.Assert; import org.junit.Assert;
import org.junit.BeforeClass; import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith;


@RunWith(JMockit.class)
public class TestExtendedTypes extends BaseTestQuery { public class TestExtendedTypes extends BaseTestQuery {
@BeforeClass @BeforeClass
public static void setupTestFiles() { public static void setupTestFiles() {
Expand Down
4 changes: 3 additions & 1 deletion exec/java-exec/src/test/resources/drill-udf/pom.xml
Expand Up @@ -63,12 +63,14 @@
<includes> <includes>
<include>${include.files}</include> <include>${include.files}</include>
</includes> </includes>
<source>1.8</source>
<target>1.8</target>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <artifactId>maven-source-plugin</artifactId>
<version>2.4</version> <version>3.0.1</version>
<configuration> <configuration>
<finalName>${jar.finalName}</finalName> <finalName>${jar.finalName}</finalName>
<includes> <includes>
Expand Down
5 changes: 4 additions & 1 deletion exec/jdbc-all/pom.xml
Expand Up @@ -241,7 +241,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId> <artifactId>maven-failsafe-plugin</artifactId>
<version>2.18.1</version> <version>2.22.0</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>
Expand All @@ -268,6 +268,7 @@
<app.class.path>${app.class.path}</app.class.path> <app.class.path>${app.class.path}</app.class.path>
<project.version>${project.version}</project.version> <project.version>${project.version}</project.version>
</systemPropertyVariables> </systemPropertyVariables>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration> </configuration>
</plugin> </plugin>


Expand Down Expand Up @@ -333,6 +334,7 @@
<exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude> <exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude>
<exclude>commons-beanutils:commons-beanutils:jar:*</exclude> <exclude>commons-beanutils:commons-beanutils:jar:*</exclude>
<exclude>io.netty:netty-tcnative:jar:*</exclude> <exclude>io.netty:netty-tcnative:jar:*</exclude>
<exclude>org.honton.chas.hocon:jackson-dataformat-hocon:*</exclude>
</excludes> </excludes>
</artifactSet> </artifactSet>
<relocations> <relocations>
Expand Down Expand Up @@ -648,6 +650,7 @@
<exclude>commons-io:commons-io</exclude> <exclude>commons-io:commons-io</exclude>
<exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude> <exclude>commons-beanutils:commons-beanutils-core:jar:*</exclude>
<exclude>commons-beanutils:commons-beanutils:jar:*</exclude> <exclude>commons-beanutils:commons-beanutils:jar:*</exclude>
<exclude>org.honton.chas.hocon:jackson-dataformat-hocon:*</exclude>
</excludes> </excludes>
</artifactSet> </artifactSet>
<relocations> <relocations>
Expand Down

0 comments on commit 639be6c

Please sign in to comment.