Add module-info support via multi-version jar (#2381)

This commit is contained in:
Rob Bygrave
2021-09-21 14:37:51 +12:00
committed by GitHub
parent b450227b13
commit 0bf8c9eb64
43 changed files with 390 additions and 222 deletions
+7 -7
View File
@@ -116,16 +116,16 @@
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -1,10 +1,5 @@
package io.ebean.config;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
/**
* Helper to find classes taking into account the context class loader.
*/
@@ -77,22 +72,14 @@ public class ClassLoadConfig {
* Return a new instance of the class using the default constructor.
*/
public Object newInstance(String className) {
try {
Class<?> cls = forName(className);
return cls.newInstance();
return cls.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new IllegalArgumentException("Error constructing " + className, e);
}
}
/**
* Return the resources for the given name.
*/
public Enumeration<URL> getResources(String name) throws IOException {
return context.getResources(name);
}
/**
* Return true if the given class is present.
*/
@@ -129,9 +116,7 @@ public class ClassLoadConfig {
* Optional - if set only use this classLoader (no fallback).
*/
protected final ClassLoader preferredLoader;
protected final ClassLoader contextLoader;
protected final ClassLoader callerLoader;
ClassLoaderContext(ClassLoader preferredLoader) {
@@ -145,15 +130,7 @@ public class ClassLoadConfig {
return (loader != null) ? loader : callerLoader;
}
Enumeration<URL> getResources(String name) throws IOException {
if (preferredLoader != null) {
return preferredLoader.getResources(name);
}
return contextLoader().getResources(name);
}
Class<?> forName(String name) throws ClassNotFoundException {
if (preferredLoader != null) {
// only use the explicitly set classLoader
return classForName(name, preferredLoader);
@@ -2,11 +2,7 @@ package io.ebean.config;
import com.fasterxml.jackson.core.JsonFactory;
import io.avaje.config.Config;
import io.ebean.DatabaseFactory;
import io.ebean.EbeanVersion;
import io.ebean.PersistenceContextScope;
import io.ebean.Query;
import io.ebean.Transaction;
import io.ebean.*;
import io.ebean.annotation.*;
import io.ebean.cache.ServerCachePlugin;
import io.ebean.config.dbplatform.DatabasePlatform;
@@ -14,14 +10,7 @@ import io.ebean.config.dbplatform.DbEncrypt;
import io.ebean.config.dbplatform.DbType;
import io.ebean.config.dbplatform.IdType;
import io.ebean.datasource.DataSourceConfig;
import io.ebean.event.BeanFindController;
import io.ebean.event.BeanPersistController;
import io.ebean.event.BeanPersistListener;
import io.ebean.event.BeanPostConstructListener;
import io.ebean.event.BeanPostLoad;
import io.ebean.event.BeanQueryAdapter;
import io.ebean.event.BulkTableEventListener;
import io.ebean.event.ServerConfigStartup;
import io.ebean.event.*;
import io.ebean.event.changelog.ChangeLogListener;
import io.ebean.event.changelog.ChangeLogPrepare;
import io.ebean.event.changelog.ChangeLogRegister;
@@ -34,14 +23,7 @@ import javax.sql.DataSource;
import java.time.Clock;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.ServiceLoader;
import java.util.*;
/**
* The configuration used for creating a Database.
@@ -82,7 +64,6 @@ import java.util.ServiceLoader;
*/
public class DatabaseConfig {
/**
* The Database name.
*/
@@ -402,8 +383,8 @@ public class DatabaseConfig {
private List<BeanPostConstructListener> postConstructListeners = new ArrayList<>();
private List<BeanPersistListener> persistListeners = new ArrayList<>();
private List<BeanQueryAdapter> queryAdapters = new ArrayList<>();
private List<BulkTableEventListener> bulkTableEventListeners = new ArrayList<>();
private List<ServerConfigStartup> configStartupListeners = new ArrayList<>();
private final List<BulkTableEventListener> bulkTableEventListeners = new ArrayList<>();
private final List<ServerConfigStartup> configStartupListeners = new ArrayList<>();
/**
* By default inserts are included in the change log.
@@ -411,42 +392,26 @@ public class DatabaseConfig {
private boolean changeLogIncludeInserts = true;
private ChangeLogPrepare changeLogPrepare;
private ChangeLogListener changeLogListener;
private ChangeLogRegister changeLogRegister;
private boolean changeLogAsync = true;
private ReadAuditLogger readAuditLogger;
private ReadAuditPrepare readAuditPrepare;
private EncryptKeyManager encryptKeyManager;
private EncryptDeployManager encryptDeployManager;
private Encryptor encryptor;
private boolean dbOffline;
private DbEncrypt dbEncrypt;
private boolean dbOffline;
private ServerCachePlugin serverCachePlugin;
/**
* The default PersistenceContextScope used if one is not explicitly set on a query.
*/
private PersistenceContextScope persistenceContextScope = PersistenceContextScope.TRANSACTION;
private JsonFactory jsonFactory;
private boolean localTimeWithNanos;
private boolean durationWithNanos;
private int maxCallStack = 5;
private boolean transactionRollbackOnChecked = true;
// configuration for the background executor service (thread pool)
@@ -2741,21 +2706,7 @@ public class DatabaseConfig {
this.classLoadConfig = classLoadConfig;
}
/**
* Return the service loader using the classLoader defined in ClassLoadConfig.
*/
public <T> ServiceLoader<T> serviceLoad(Class<T> spiService) {
return ServiceLoader.load(spiService, classLoadConfig.getClassLoader());
}
/**
* Return the first service using the service loader (or null).
*/
public <T> T service(Class<T> spiService) {
ServiceLoader<T> load = serviceLoad(spiService);
Iterator<T> serviceInstances = load.iterator();
return serviceInstances.hasNext() ? serviceInstances.next() : null;
}
/**
* Load settings from application.properties, application.yaml and other sources.
@@ -2794,7 +2745,7 @@ public class DatabaseConfig {
*/
private List<AutoConfigure> autoConfiguration() {
List<AutoConfigure> list = new ArrayList<>();
for (AutoConfigure autoConfigure : serviceLoad(AutoConfigure.class)) {
for (AutoConfigure autoConfigure : ServiceLoader.load(AutoConfigure.class)) {
autoConfigure.preConfigure(this);
list.add(autoConfigure);
}
+58
View File
@@ -0,0 +1,58 @@
module io.ebean.api {
uses io.ebean.config.AutoConfigure;
uses io.ebean.datasource.DataSourceAlertFactory;
uses io.ebean.metric.MetricFactory;
uses io.ebean.service.SpiContainerFactory;
uses io.ebean.service.SpiRawSqlService;
uses io.ebean.service.SpiProfileLocationFactory;
uses io.ebean.service.SpiFetchGroupService;
requires transitive java.sql;
requires transitive io.avaje.config;
requires transitive persistence.api;
requires transitive io.ebean.annotation;
requires transitive io.ebean.datasource.api;
requires transitive org.slf4j;
requires static io.ebean.types;
requires static io.avaje.jsr305x;
requires static com.fasterxml.jackson.core;
requires static javax.servlet.api;
requires static com.h2database;
exports io.ebean;
exports io.ebean.bean;
exports io.ebean.cache;
exports io.ebean.meta;
exports io.ebean.config;
exports io.ebean.config.dbplatform;
exports io.ebean.config.dbplatform.clickhouse;
exports io.ebean.config.dbplatform.h2;
exports io.ebean.config.dbplatform.db2;
exports io.ebean.config.dbplatform.cockroach;
exports io.ebean.config.dbplatform.hana;
exports io.ebean.config.dbplatform.hsqldb;
exports io.ebean.config.dbplatform.mariadb;
exports io.ebean.config.dbplatform.mysql;
exports io.ebean.config.dbplatform.nuodb;
exports io.ebean.config.dbplatform.oracle;
exports io.ebean.config.dbplatform.postgres;
exports io.ebean.config.dbplatform.sqlanywhere;
exports io.ebean.config.dbplatform.sqlite;
exports io.ebean.config.dbplatform.sqlserver;
exports io.ebean.event;
exports io.ebean.event.readaudit;
exports io.ebean.event.changelog;
exports io.ebean.common;
exports io.ebean.docstore;
exports io.ebean.plugin;
exports io.ebean.metric;
exports io.ebean.search;
exports io.ebean.service;
exports io.ebean.text;
exports io.ebean.text.json;
exports io.ebean.text.csv;
exports io.ebean.util;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.api
+1 -12
View File
@@ -63,23 +63,12 @@
<extensions>true</extensions>
<configuration>
<tiles>
<!-- other tiles ... -->
<tile>io.ebean.tile:enhancement:12.11.3</tile>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,15 @@
import io.ebeaninternal.server.autotune.AutoTuneServiceProvider;
import io.ebeaninternal.server.autotune.service.AutoTuneServiceFactory;
/**
* Provider of AutoTuneServiceProvider
*/
module io.ebean.autotune {
provides AutoTuneServiceProvider with AutoTuneServiceFactory;
requires io.ebean.api;
requires io.ebean.core;
requires java.xml;
requires java.xml.bind;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.autotune
+17 -1
View File
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>ebean-parent</artifactId>
@@ -28,4 +29,19 @@
</dependencies>
<build>
<plugins>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,10 @@
module io.ebean.core.type {
exports io.ebean.core.type;
requires transitive java.sql;
requires transitive io.ebean.api;
requires static com.fasterxml.jackson.core;
}
+12 -11
View File
@@ -207,17 +207,6 @@
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
@@ -239,6 +228,18 @@
</executions>
</plugin>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
@@ -5,7 +5,9 @@ import io.avaje.classpath.scanner.ClassPathScannerFactory;
import io.ebean.config.DatabaseConfig;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;
/**
* Utility to finds and return the list of ClassPathScanner services.
@@ -17,7 +19,7 @@ public class ClassPathScanners {
*/
public static List<ClassPathScanner> find(DatabaseConfig config) {
List<ClassPathScanner> scanners = new ArrayList<>();
for (ClassPathScannerFactory factory : config.serviceLoad(ClassPathScannerFactory.class)) {
for (ClassPathScannerFactory factory : ServiceLoader.load(ClassPathScannerFactory.class)) {
scanners.add(factory.createScanner(config.getClassLoadConfig().getClassLoader()));
}
return scanners;
@@ -380,7 +380,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer {
*/
public void start() {
if (config.isRunMigration() && TenantMode.DB != config.getTenantMode()) {
final AutoMigrationRunner migrationRunner = config.service(AutoMigrationRunner.class);
final AutoMigrationRunner migrationRunner = ServiceUtil.service(AutoMigrationRunner.class);
if (migrationRunner == null) {
throw new IllegalStateException("No AutoMigrationRunner found. Probably ebean-migration is not in the classpath?");
}
@@ -124,7 +124,7 @@ final class InitDataSource {
* Attach DataSourceAlert via service loader if present.
*/
private void attachAlert(DataSourceConfig dsConfig) {
DataSourceAlertFactory alertFactory = config.service(DataSourceAlertFactory.class);
DataSourceAlertFactory alertFactory = ServiceUtil.service(DataSourceAlertFactory.class);
if (alertFactory != null) {
dsConfig.setAlert(alertFactory.createAlert());
}
@@ -156,7 +156,7 @@ public final class InternalConfiguration {
this.clockService = new ClockService(config.getClock());
this.tableModState = new TableModState();
this.logManager = initLogManager();
this.docStoreFactory = initDocStoreFactory(config.service(DocStoreFactory.class));
this.docStoreFactory = initDocStoreFactory(service(DocStoreFactory.class));
this.jsonFactory = config.getJsonFactory();
this.clusterManager = clusterManager;
this.backgroundExecutor = backgroundExecutor;
@@ -191,8 +191,12 @@ public final class InternalConfiguration {
return new InternalConfigXmlMap(xmEbeans, config.getClassLoadConfig().getClassLoader());
}
private <S> S service(Class<S> cls) {
return ServiceUtil.service(cls);
}
private List<XmapEbean> readExternalMapping() {
final XmapService xmapService = config.service(XmapService.class);
final XmapService xmapService = service(XmapService.class);
if (xmapService == null) {
return Collections.emptyList();
}
@@ -201,7 +205,7 @@ public final class InternalConfiguration {
private SpiLogManager initLogManager() {
// allow plugin - i.e. capture executed SQL for testing/asserts
SpiLoggerFactory loggerFactory = config.service(SpiLoggerFactory.class);
SpiLoggerFactory loggerFactory = service(SpiLoggerFactory.class);
if (loggerFactory == null) {
loggerFactory = new DLoggerFactory();
}
@@ -336,7 +340,7 @@ public final class InternalConfiguration {
}
AutoTuneService createAutoTuneService(SpiEbeanServer server) {
final AutoTuneServiceProvider provider = config.service(AutoTuneServiceProvider.class);
final AutoTuneServiceProvider provider = service(AutoTuneServiceProvider.class);
return provider == null ? new NoAutoTuneService() : provider.create(server, config);
}
@@ -445,7 +449,7 @@ public final class InternalConfiguration {
if (!profilingConfig.isEnabled()) {
return new NoopProfileHandler();
}
SpiProfileHandler handler = config.service(SpiProfileHandler.class);
SpiProfileHandler handler = service(SpiProfileHandler.class);
if (handler == null) {
handler = new DefaultProfileHandler(profilingConfig);
}
@@ -533,7 +537,7 @@ public final class InternalConfiguration {
}
SlowQueryListener listener = config.getSlowQueryListener();
if (listener == null) {
listener = config.service(SlowQueryListener.class);
listener = service(SlowQueryListener.class);
if (listener == null) {
listener = new DefaultSlowQueryListener();
}
@@ -589,7 +593,7 @@ public final class InternalConfiguration {
}
ServerCacheFactory factory = serverCachePlugin.create(config, backgroundExecutor);
ServerCacheNotifyPlugin notifyPlugin = config.service(ServerCacheNotifyPlugin.class);
ServerCacheNotifyPlugin notifyPlugin = service(ServerCacheNotifyPlugin.class);
if (notifyPlugin != null) {
// plugin supplied so use that to send notifications
cacheNotify = notifyPlugin.create(config);
@@ -644,7 +648,7 @@ public final class InternalConfiguration {
* Return the DDL generator.
*/
public SpiDdlGenerator initDdlGenerator(SpiEbeanServer server) {
final SpiDdlGeneratorProvider service = config.service(SpiDdlGeneratorProvider.class);
final SpiDdlGeneratorProvider service = service(SpiDdlGeneratorProvider.class);
return service == null ? new NoopDdl() : service.generator(server);
}
@@ -0,0 +1,13 @@
package io.ebeaninternal.server.core;
import java.util.Iterator;
import java.util.ServiceLoader;
public final class ServiceUtil {
public static <S> S service(Class<S> cls) {
ServiceLoader<S> load = ServiceLoader.load(cls);
Iterator<S> serviceInstances = load.iterator();
return serviceInstances.hasNext() ? serviceInstances.next() : null;
}
}
@@ -17,6 +17,7 @@ import io.ebean.types.Inet;
import io.ebean.util.AnnotationUtil;
import io.ebeaninternal.api.DbOffline;
import io.ebeaninternal.api.GeoTypeProvider;
import io.ebeaninternal.server.core.ServiceUtil;
import io.ebeaninternal.server.core.bootup.BootupClasses;
import io.ebeaninternal.server.deploy.meta.DeployBeanProperty;
import org.joda.time.DateTime;
@@ -156,7 +157,7 @@ public final class DefaultTypeManager implements TypeManager {
}
private void loadGeoTypeBinder(DatabaseConfig config) {
final GeoTypeProvider provider = config.service(GeoTypeProvider.class);
final GeoTypeProvider provider = ServiceUtil.service(GeoTypeProvider.class);
if (provider != null) {
geoTypeBinder = provider.createBinder(config);
}
@@ -0,0 +1,63 @@
module io.ebean.core {
uses io.ebean.plugin.Plugin;
uses io.ebean.cache.ServerCachePlugin;
uses io.ebean.cache.ServerCacheNotifyPlugin;
uses io.ebean.config.DatabaseConfigProvider;
uses io.ebean.config.ServerConfigProvider;
uses io.ebean.config.ModuleInfoLoader;
uses io.ebean.datasource.DataSourceAlertFactory;
uses io.ebean.core.type.ExtraTypeFactory;
uses io.ebeanservice.docstore.api.DocStoreFactory;
uses io.ebean.migration.auto.AutoMigrationRunner;
uses io.avaje.classpath.scanner.ClassPathScannerFactory;
uses io.ebeaninternal.api.SpiLoggerFactory;
uses io.ebeaninternal.api.GeoTypeProvider;
uses io.ebeaninternal.api.SpiDdlGeneratorProvider;
uses io.ebeaninternal.xmapping.api.XmapService;
uses io.ebeaninternal.server.autotune.AutoTuneServiceProvider;
uses io.ebeaninternal.server.cluster.ClusterBroadcastFactory;
requires transitive io.ebean.api;
requires transitive io.ebean.migration.auto;
requires transitive io.ebean.xmapping.api;
requires transitive io.ebean.core.type;
requires transitive io.ebean.ddl.runner;
requires transitive org.antlr.antlr4.runtime;
requires io.avaje.classpath.scanner;
requires io.ebean.types;
requires org.slf4j;
requires static io.avaje.jsr305x;
requires static com.fasterxml.jackson.core;
requires static com.fasterxml.jackson.databind;
requires static jakarta.validation;
requires static java.transaction;
requires static java.naming;
requires static java.validation;
requires static org.postgresql.jdbc;
requires static joda.time;
exports io.ebeaninternal.api;
exports io.ebeaninternal.server.cache;
// export these for io.ebean.ddl.generator (but that becomes unnamed module in maven test scope)
exports io.ebeaninternal.server.deploy;
exports io.ebeaninternal.server.deploy.visitor;
// exports io.ebeaninternal.server.deploy to io.ebean.autotune, io.ebean.ddl.generator;
// exports io.ebeaninternal.server.deploy.visitor to io.ebean.ddl.generator;
exports io.ebeaninternal.server.el to io.ebean.autotune;
exports io.ebeaninternal.server.autotune to io.ebean.autotune;
exports io.ebeaninternal.server.querydefn to io.ebean.autotune, io.ebean.querybean;
exports io.ebeaninternal.server.type to io.ebean.postgis;
exports io.ebeaninternal.server.util to io.ebean.querybean;
exports io.ebeaninternal.server.expression to io.ebean.querybean;
provides io.ebean.metric.MetricFactory with io.ebeaninternal.server.profile.DMetricFactory;
provides io.ebean.service.SpiContainerFactory with io.ebeaninternal.server.DContainerFactory;
provides io.ebean.service.SpiFetchGroupService with io.ebeaninternal.server.query.DFetchGroupService;
provides io.ebean.service.SpiJsonService with io.ebeaninternal.json.DJsonService;
provides io.ebean.service.SpiProfileLocationFactory with io.ebeaninternal.server.profile.DProfileLocationFactory;
provides io.ebean.service.SpiRawSqlService with io.ebeaninternal.server.rawsql.DRawSqlService;
}
@@ -1,27 +0,0 @@
Manifest-Version: 1.0
Premain-Class: io.ebean.enhance.agent.Transformer
Automatic-Module-Name: io.ebean.core
Bundle-ManifestVersion: 2
Bundle-Name: Ebean-ORM
Bundle-SymbolicName: io.ebean
Bundle-Version: 4.2.0
Bundle-ClassPath: .
Bundle-Vendor: avaje
Export-Package: io.ebean,
io.ebean.annotation,
io.ebean.bean,
io.ebean.cache,
io.ebean.common,
io.ebean.config,
io.ebean.config.dbplatform,
io.ebean.event,
io.ebean.meta,
io.ebean.text,
io.ebean.text.csv,
io.ebean.text.json,
io.ebean.util
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Require-Bundle: org.slf4j.api;bundle-version="1.7.2"
Import-Package: javax.persistence;version="2.0.0"
+8 -9
View File
@@ -65,7 +65,7 @@
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
<version>2.0.1.Final</version>
<scope>test</scope>
</dependency>
@@ -90,18 +90,17 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,15 @@
open module io.ebean.ddl.generator {
exports io.ebean.dbmigration;
provides io.ebean.dbmigration.DbMigration with io.ebeaninternal.dbmigration.DefaultDbMigration;
provides io.ebeaninternal.api.SpiDdlGeneratorProvider with io.ebeaninternal.dbmigration.DdlGeneratorProvider;
requires transitive io.ebean.ddl.runner;
requires transitive io.ebean.core;
requires transitive java.xml.bind;
requires io.ebean.core.type;
requires io.ebean.migration;
uses io.ebean.dbmigration.DbMigration;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.ddlgen
+8 -6
View File
@@ -14,15 +14,17 @@
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,4 @@
module io.ebean.xmapping.api {
exports io.ebeaninternal.xmapping.api;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.externalmapping.api
+1 -11
View File
@@ -90,21 +90,11 @@
<tiles>
<!-- other tiles ... -->
<tile>io.ebean.tile:enhancement:12.11.3</tile>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
@@ -0,0 +1,19 @@
import io.avaje.classpath.scanner.ClassPathScannerFactory;
import io.ebeaninternal.xmapping.api.XmapService;
import io.ebeaninternal.xmlmapping.JaxbXmapService;
/**
* Provider of XmapService.
*/
module io.ebean.xmapping.xml {
provides XmapService with JaxbXmapService;
requires transitive io.ebean.xmapping.api;
requires transitive java.xml;
requires transitive java.xml.bind;
requires io.avaje.classpath.scanner;
uses ClassPathScannerFactory;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.externalmapping.xml
+1
View File
@@ -106,6 +106,7 @@
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:12.11.3</tile>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
@@ -0,0 +1,18 @@
import io.ebean.core.type.ExtraTypeFactory;
import io.ebeaninternal.api.GeoTypeProvider;
/**
* Provides GeoTypeProvider and ExtraTypeFactory.
*/
module io.ebean.postgis {
provides ExtraTypeFactory with io.ebean.postgis.PostgisExtraTypeFactory;
provides GeoTypeProvider with io.ebean.postgis.PostgisGeoTypeBindProvider;
requires io.ebean.core;
requires org.postgresql.jdbc;
requires postgis.jdbc;
requires geolatte.geom;
requires com.fasterxml.jackson.core;
}
+9 -12
View File
@@ -93,7 +93,14 @@
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<argLine>
--add-opens io.ebean.querybean/org.querytest=io.ebean.core
</argLine>
</configuration>
</plugin>
<!-- Enhancement -->
<plugin>
<groupId>io.repaint.maven</groupId>
@@ -103,21 +110,11 @@
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:12.11.3</tile>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
@@ -0,0 +1,11 @@
module io.ebean.querybean {
exports io.ebean.typequery;
requires io.ebean.api;
requires io.ebean.core;
requires static io.ebean.types;
requires static joda.time;
requires static io.avaje.jsr305x;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.querybean
+1
View File
@@ -81,6 +81,7 @@
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:12.11.3</tile>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
@@ -0,0 +1,13 @@
import io.ebean.cache.ServerCachePlugin;
/**
* Provider of ServerCachePlugin.
*/
module io.ebean.redis {
provides ServerCachePlugin with io.ebean.redis.RedisCachePlugin;
requires transitive io.ebean.core;
requires transitive redis.clients.jedis;
}
+2 -12
View File
@@ -113,7 +113,7 @@
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
<version>2.0.1.Final</version>
<scope>test</scope>
</dependency>
@@ -221,21 +221,11 @@
<configuration>
<tiles>
<tile>io.ebean.tile:enhancement:12.11.3</tile>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
@@ -0,0 +1,25 @@
open module io.ebean.test {
exports io.ebean.test;
exports io.ebean.test.config;
exports io.ebean.test.config.platform;
exports io.ebean.test.config.provider;
provides io.ebeaninternal.api.SpiLoggerFactory with io.ebean.test.CapturingLoggerFactory;
provides io.ebean.config.AutoConfigure with io.ebean.test.config.AutoConfigureForTesting;
requires transitive org.slf4j;
requires transitive io.ebean.datasource;
requires transitive io.ebean.core;
requires transitive io.ebean.ddl.generator;
requires com.fasterxml.jackson.core;
requires com.fasterxml.jackson.databind;
requires com.fasterxml.jackson.datatype.jsr310;
requires transitive io.ebean.docker;
requires transitive org.assertj.core;
requires transitive java.xml.bind;
requires transitive com.h2database;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean.test
+7 -6
View File
@@ -43,13 +43,14 @@
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
+7
View File
@@ -0,0 +1,7 @@
module io.ebean {
requires transitive io.ebean.api;
requires transitive io.ebean.core;
requires transitive io.ebean.querybean;
}
@@ -1,2 +0,0 @@
Manifest-Version: 1.0
Automatic-Module-Name: io.ebean
+11
View File
@@ -35,6 +35,17 @@
<compilerArgument>-proc:none</compilerArgument>
</configuration>
</plugin>
<plugin>
<groupId>io.repaint.maven</groupId>
<artifactId>tiles-maven-plugin</artifactId>
<version>2.24</version>
<extensions>true</extensions>
<configuration>
<tiles>
<tile>io.avaje.tile:moditech-module:1.0</tile>
</tiles>
</configuration>
</plugin>
</plugins>
</build>
@@ -0,0 +1,7 @@
module io.ebean.querybean.generator {
provides javax.annotation.processing.Processor with io.ebean.querybean.generator.Processor;
requires java.compiler;
requires java.sql;
}