- bootique-kafka #30: If you were using
KafkaConsumerRunner, you will have to switch toconsume(KafkaConsumerCallback,Duration). The callback is invoked on a batch of data after each poll.
- bootique-jetty #109: To fix
JettyTesterinitialization sequence we had to make a subtle change in its lifecycle. Now you can only callJettyTester.getUrl()orJettyTester.getPort()when the test app is already started with--servercommand. Previously these methods worked on test runtimes even before they were started. The most typical affected scenario is when a test class caches its client "target" object:
static final JettyTester jetty = JettyTester.create();
...
static final WebTarget target = jetty.getTarget();Instead you should call jetty.getTarget() on the spot inside the unit test.
- bootique #300: The new API allows to register configuration-loading extensions like this:
BQCoreModule.extend(b).addConfigLoader(MyLoader.class);This obsoletes a couple of existing mechanisms. If you relied on ConfigurationSource object or on
BQCoreModule.extend(b).addPostConfig("..") (introduced in 2.0.M1), they will no longer be available and should be
replaced with custom JsonConfigurationLoader.
-
bootique-metrics #41: A few configuration keys were changed for
heartbeat. Rename the following config keys in YAML or properties: -
heartbeat.initialDelayMstoheartbeat.initialDelay -
heartbeat.fixedDelayMstoheartbeat.fixedDelay -
heartbeat.healthCheckTimeoutMstoheartbeat.healthCheckTimeout
While you are at it, you can change the values to human-readable "durations":
# was:
# heartbeat:
# healthCheckTimeoutMs: 20000
# became:
heartbeat:
healthCheckTimeout: 20sec-
bootique-jdbc #106: Delete with condition API got improved. If you are using delete with condition anywhere in tests (
table.delete().and(..)ortable.delete().or(..)), you will get a compilation error. Change those calls totable.delete().where(..)to fix it. -
bootique-jdbc #107: Table API related to SELECT queries got reworked. If you receive compilation errors in tests either because
Table.selectColumnssignature is different, orTable.get*orTable.select*methods are missing, consider replacing your code with either the new select API (Table.selectColumns(..)) or a matcher (Table.get*are an indicator that you likely need a matcher to compare values in DB instead of selecting them in Java). -
bootique-rabbitmq #8: There is a substantial refactoring of the
ChannelFactoryAPI. For one thing it was renamed toio.bootique.rabbitmq.client.channel.RmqChannelFactory. Second, if you want to create an RMQ Channel with a specific topology, you would useRmqChannelFactory.newChannel(connectionName), and then use the available builder methods to describe the desired topology. You will need to update your code accordingly.
-
bootique #269 Upgrade from Guice DI to "bootique-di". That's the BIG one! The core of Bootique - its dependency injection engine - was switched over from Google Guice to a faster, lighter "bootique-di". The two DI implementations are conceptiually rather close, so there is a straightforward migration path. More details are provided in the DI Migration Guide.
-
bootique #271: Bootique is now integrated with JUnit 5. A few notes:
- Use
@RegisterExtensionto annotateBQTestFactory. For class-scoped test factory use the newBQTestClassFactory, also annotated with@RegisterExtension. - JUnit 4 compatibility. You still have the option to use JUnit 4, and can take your time to migrate to 5. Note that JUnit 4 support is now done via JUnit 5 "Vintage" engine and JUnit itself is a compile dependency of "bootique-test" (it used to be "provided"). So if you import "bootique-test", you can remove an explicit JUnit dependency, and can mix and match 4 and 5 style tests in your code.
BQDaemonTestFactoryis not available under 5, as it is fairly useless and doesn't bring any advantages overBQTestFactory.
- Use
-
bootique #288:
Bootique.module(BQModuleProvider)andBQTestRuntimeBuilder.module(BQModuleProvider)were renamed tomoduleProviderto avoid arguments ambiguity. If you get compilation errors for these methods, replace them withmoduleProvider(BQModuleProvider). -
bootique-cayenne #68:
mapsconfiguration option is changed from list to map. You need to upgrade your yml configs accordingly. -
bootique-jersey #47: An internal injection point (a
Set<Package>listing Java packages that contain Jersey components) is now using an extra annotation to avoid polluting common DI namespace. In an unlikely event that your code explicitly injects aSet<Package>to get custom Jersey components, you will need to annotate the injection point with@JerseyResource. -
bootique-agrest #42: Previously deprecated
bootique-linkrestintegration with the legacy LinkRest framework is removed. If you are still using it, you should be able to switch to the new well-supported incarnation of this framework called Agrest. On Bootique side, simply replace the import ofbootique-linkrestwithbootique-agrest, and on LinkRest side follow the upgrade instructions back from Agrest version 3.0. -
bootique-job #82: Previously deprecated trigger millisecond-based configs properties got removed. Please check your configurations and replace them with duration-based analogs (durations are string that contain units, e.g. "5ms", "6sec", etc.) :
scheduler.triggers.fixedRateMsshould becomescheduler.triggers.fixedRatescheduler.triggers.fixedDelayMsshould becomescheduler.triggers.fixedDelayscheduler.triggers.initialDelayMsshould becomescheduler.triggers.initialDelay
To update your config, change it from something like:
scheduler:
triggers:
- job: j1
trigger: t1
initialDelayMs: 10
fixedDelayMs: 10000to something like this:
scheduler:
triggers:
- job: j1
trigger: t1
initialDelay: 10ms
fixedDelay: 10sec-
bootique-kafka #28: Support for the legacy Kafka client v 0.8 is removed. A newer client should be used. See [https://github.com/bootique/bootique-kafka] for details.
-
bootique-jetty #95: Default value for
maxThreadsproperty was lowered from 1024 to 200. If you relied on this default value you should now set it explicitly in the app config. -
bootique-jersey #48:
bootique-jersey-clientis no longer a "top-level" project and was merged tobootique-jersey. There's no code changes, but the module coordinates have changed. Instead ofio.bootique.jersey.client:bootique-jersey-clientyou will need to importio.bootique.jersey:bootique-jersey-client. -
bootique-rabbitmq #1:
bootique-rabitmq-clientartifact "group" changed fromio.bootique.rabbitmq.clienttoio.bootique.rabbitmq. Adjust your build scripts accordingly. -
bootique-rabbitmq #2: There was a deep configuration system refactoring:
ChannelFactorywas moved toio.bootique.rabbitmq.clientpackage. Adjust your imports accordingly.ConnectionFactorywas renamed toChannelManagerand is no longer injectable. You will rarely need to access it directly, but if you do, you can retrieve it fromChannelFactoryChannelFactorymethods no longer require aConnectionparameter. Pass the connection name instead. The old methods are still around, but are deprecated.
-
bootique-swagger #18: The default URL of the Swagger UI has changed from "/swagger" to "/swagger-ui". You'll need to either start using the new URL, or change it via configuration property
swaggerui.<label>.uiPath. -
bootique-swagger #21: To support the same Swagger UI servlet serving multiple models in one app ("multitenancy"), "swaggerui" configuration is now nested, consisting of zero or more named configurations. To update your config, change it from something like:
swaggerui:
specUrl: "https://example.org/spec1.yml"to something like this:
swaggerui:
default: # "default" is an arbitrary name. You can use your own
specUrl: "https://example.org/spec1.yml"-
bootique-swagger #24:
bootique-swagger(Swagger backend) was upgraded to support OpenAPI spec 3.0 (instead of the legacy Swagger 2.0). If you were using Swagger annotations, you will need to migrate from "io.swagger:swagger-annotations" to "io.swagger.core.v3:swagger-annotations". -
bootique-curator #17: With Curator dependency upgrade,
bootique-curatornow supports Zookeeper 3.5 or newer.
-
bootique #266: To improve Java 11 compatibility, Bootique core was upgraded to the latest Guice v 4.2.2. This is more of an FYI. No action is needed from the users, unless you are manually managing Guice versions in your app.
-
bootique-agrest #37: While
bootique-agrestdidn't change, the underlying Agrest framework introduced a few breaking changes between 3.1 and 3.2, that hopefully affect only a small subset of users:
See Agrest upgrade instructions for more details.
- bootique-linkmove #37: LinkMove library was upgraded to
v 2.7. While
bootique-linkmovedidn't change, the underlying LinkMove framework introduced a few breaking changes between 2.6 and 2.7. Namely switching of internal ETL data representation to DFLib DataFrame. If your get any compilation errors as a result, see LinkMove upgrade instructions for details of the 2.7 changes.
Fully compatible with 1.0.RC1
-
bootique-agrest #35: Group of
bootique-linkrestartifact changed fromio.bootique.linkresttoio.bootique.agrest. -
bootique #252: Method
defaultValue()in OptionMetadata builder changed tovalueOptionalWithDefault() -
bootique #251: Method
addConfigOnOption(String optionName, String configResourceId)inBQCoreModuleExtenderrenamed tomapConfigResource -
bootique #249: Confusing methods
addOption(String configPath, String defaultValue, String name)andaddOption(String configPath, String name)inBQCoreModuleExtenderare replaced with new onemapConfigPath(String optionName, String configPath)that has much clearer signature. Note that option that will be mapped to config path should be added separately. -
bootique #188: Guice was upgraded from 4.0 to 4.2.0 for better support of the latest versions of Java. This changes the version of Guava lib to
23.6-androidand that Guava brings with it a whole set of other libraries (see the screenshot here. If your code depends on Guava elsewhere, be aware of this change. Also (and this is very unfortunate) this upgrade increased the dependency footprint by ~500K. -
bootique #214: All APIs previously deprecated are removed from Bootique core. Please recompile your code and fix any failures (refer to 0.25 JavaDocs for suggested API replacements).
The most notable change though, that you will not notice just by recompiling, is that Bootique now
completely ignores BQ_ environment variables that used to set config properties. Please inspect
your app launch environment (be it IDE or server/Docker/cloud) to see if you still rely on such variables.
Switch to explicitly declared variables instead:
// FWIW, you can use your old BQ_ var name here if you feel like it.
// Just need to bind it explicitly.
BQCoreModule.extend(bidner).declareVar("a.b.c", "MY_VAR");-
bootique-jetty #75: As a part of deprecated API removal
bootique-jetty-testmodule was removed. It is enough to usebootique-testas described in the 0.25 blog ("Test API Improvements" section). -
bootique-undertow #13: As a part of deprecated API removal
bootique-undertow-testmodule was removed. It is enough to usebootique-testas described in the 0.25 blog ("Test API Improvements" section). -
bootique-jetty #77: Jetty health checked thresholds structure has changed as shown in the following diff:
jetty:
health:
- queuedRequestsThreshold: "2 3"
- poolUtilizationThreshold: "0.6 0.9"
+ queuedRequestsThresholds:
+ warning: 2
+ critical: 3
+ poolUtilizationThresholds:
+ warning: 60%
+ critical: 90%- bootique-jdbc #81: Hikari health check threashold structure has changed as shown in the following diff. Now you can specify warning and critical ranges and use human-readable durations:
jdbc:
mydb:
health:
- connectivityCheckTimeout: 250
- expected99thPercentile: 10
+ connectivity:
+ critical: 250ms
+ connection99Percent:
+ warning: 10ms
+ critical: 500ms-
bootique-jdbc #82:
bootique-jdbc-instrumentedmodule was removed. There are healthchecks specific to Tomcat and Hikari pools, so there's no need to have a generic set of healthchecks that interferes with them. You will need to remove references tobootique-jdbc-instrumentedfrom your build scripts and replace them withbootique-jdbc-tomcat-instrumented(that actually contains healtchecks ported from the removed module) orbootique-jdbc-hikaricp-instrumented(that has its own set of health checks). -
bootique-job #64: If you used Zookeeper for job locking, configuration is done differently now. You will need to remove
scheduler.clusteredLocks: truefrom YAML, and instead add a dependency onio.bootique.job:bootique-job-zookeeper(or the newio.bootique.job:bootique-job-consul). Either will enable lock clustering, but with its own mechanism. -
bootique-job #66: Trigger configurations switched from numeric milliseconds to "durations". While the configuration is backwards-compatible, we'd encourage you to review it and replace config keys "fixedDelayMs", "fixedRateMs", "initialDelayMs" with "fixedDelay", "fixedRate", "initialDelay" respectively. While you are at it, you may switch to more user-friendly forms, such as "3s" or "5min".
-
bootique-kafka #19:
bootique-kafka-clientrepository was renamed tobootique-kafka. If you are usingbootique-kafka-client, you will need change the Maven "groupId" toio.bootique.kafkafromio.bootique.kafka.client. -
bootique-kafka #21: "kafkaclient.producer.lingerMs" property got renamed to "kafkaclient.producer.linger" and was changed to a Duration type. Please change all references to
kafkaclient.producer.lingerMsin your config to bekafkaclient.producer.linger. Note that once you do it, you can use any supported duration format e.g. "1s". Also note that the default value for this property was changed from 1 to 0 to match the Kafka default. -
bootique-kafka #23: Per this task, a new user-friendly Consumer API was created. Breaking changes:
- Consumers can no longer be obtained via
KafkaClientFactory. Instead injectKafkaConsumerFactoryand use its Consumer builder methods. - Producers can no longer be obtained via
KafkaClientFactory. Instead injectKafkaproducerFactoryand use its Producer builder methods. kafkaclient.consumer.autoCommitIntervalMsconfig is renamed tokafkaclient.consumer.autoCommitIntervaland is now a duration (so you can use readable values like "1ms"). Same goes forkafkaclient.consumer.sessionTimeoutMsthat got renamed tokafkaclient.consumer.sessionTimeout.
- Consumers can no longer be obtained via
-
bootique-metrics #30: There was a massive renaming of module metrics to follow a single naming convention. Follow the link to bootique-metrics #30 to see the old vs new names across all affected modules.
-
bootique-metrics #31: Similarly to metrics, health checks got similarly renamed to follow the same naming convention. Follow the link to bootique-metrics #31 to see the old vs new names across all affected modules.
-
bootique-agrest #34 : LinkRest was changed to Agrest and bootique-agrest. Bootique-linkrest now deprecated. Please use bootique-agrest dependency.
- bootique-jdbc #48: This affects all users of
bootique-jdbc, including indirect users, such as those relying onbootique-cayenne,bootique-linkrest,bootique-linkmove,bootique-jooq,bootique-liquibase, etc. Due tobootique-jdbcmodule becoming "abstract", if you have a JDBC app, on startup you will see an error like this:
No concrete 'bootique-jdbc' implementations found. You will need to add one
(such as 'bootique-jdbc-tomcat', etc.) as an application dependency.
To fix the problem, you will need to do exactly as suggested, i.e. add the following dependency to your pom.xml:
<dependency>
<groupId>io.bootique.jdbc</groupId>
<artifactId>bootique-jdbc-tomcat</artifactId>
<scope>compile</scope>
</dependency>The original bootique-jdbc is now a transitive dependency of the new bootique-jdbc-tomcat, so you may remove
explicit bootique-jdbc import (or leave it, as no harm is being done by keeping it around). If you are using
bootique-jdbc-instrumented (i.e. JDBC with metrics), import a different dependency:
<dependency>
<groupId>io.bootique.jdbc</groupId>
<artifactId>bootique-jdbc-tomcat-instrumented</artifactId>
<scope>compile</scope>
</dependency>-
bootique-jdbc #66: DataSource connection health checks were renamed to uniquely identify their origin and purpose. E.g. a health check that may have previously been called
mydbafter the DataSource name, will now be calledbq.jdbc.mydb.canConnect. If any of your code or the monitoring system depended on the certain name format, you will need to update it accordingly. -
bootique-metrics #20: Health check module was separated from the metric module. If you used healthcheck API in your code and are getting compilation errors now, you will need to add an extra dependency:
<dependency>
<groupId>io.bootique.metrics</groupId>
<artifactId>bootique-metrics-healthchecks</artifactId>
<scope>compile</scope>
</dependency>Additionally if you called MetricsModule.extend(binder), replace it with HealthCheckModule.extend(binder).
- bootique-jetty #69: There was a slight change in health check servlet output format. In case of errors the format now includes specific status (CRITICAL, WARNING, UNKNOWN). E.g.:
// old format
! h3: ERROR - I am not healthy
// new format
! h3: WARNING - I am not healthy
! h3: CRITICAL - I am not healthy- bootique-jetty #70: With introduction of explicit per-connector
acceptorThreadsandconnectorThreadsconfiguration properties, the defaults used by the server for acceptors and selectors have changed from 0.5 acceptor and 1 selector thread(s) per CPU core to 0.125 acceptor and 0.5 selector thread(s) per CPU core. In the unlikely event that you need the old values back, you can configure them using the new properties. E.g.:
jetty:
connectors:
- acceptorThreads: 4
selectorThreads: 8- bootique-jetty #71: We decided to clarify the meaning of the Jetty thread pool metrics. The old "utilization" metric was not very useful as it compared used threads against the current thread pool size. But since the pool can grow/shrink at any moment, it didn't tell anything about the state of the app. So its meaning is now replaced to be the same as the old "utilization-max" (i.e. a ratio of used threads to the max possible threads in the pool). "utilization-max" was deprecated.
If you used "utilization" metric for anything in your monitoring system, etc., make sure to adjust for the new meaning.
- bootique-jersey-client #29:
followRedirectsdefault value has changed from "false" to "true". If you implicitly relied onjerseyclient.followRedirectsdefault to be "false", you will need to reconfigure your app to set it to false explicitly:
jerseyclient:
followRedirects: false-
bootique #180: The ability to explicitly declare a BQ_* var was removed. In other words this API is not longer available:
// this used to declare a variable BQ_PROP_XYZ BQCoreModule.extend(binder).declareVar("prop.xyz")
You have two choices for upgrading your code: either (1) simply remove this line of code (
BQ_PROP_XYZwill keep working, just won't show in help), or (2 - better) assign this variable an app-specific name. E.g.BQCoreModule.extend(binder).declareVar("prop.xyz", "MY_VAR"). -
bootique-jdbc #39: If you had unit tests that are using
Table.insertFromCsv(..)and the.csvfiles contain timestamps, replace the space between date and time portions with "T" symbol. The new format is proper ISO-8601.
-
bootique #141: If you've ever implemented your own "main" method instead of relying on the one from
io.bootique.Bootique, you may want to replace the call to the deprecatedBootique.run()withBootique.exec().exit(). Notice how the new API allows to insert custom code after Bootique finish, but before the app exit. -
bootique #142: This issue introduces API-breaking changes to the integration testing API. Instead of
BQTestRuntimeandBQDaemonTestRuntime, test factories now produce simplyBQRuntime, that helps to focus on the object being tested instead of test wrappers. Upgrade instructions:BQTestRuntimeandBQDaemonTestRuntimeare gone, so replace references to them with justBQRuntime.- A common call to
testRuntime.getRuntime().getInstance(..)should now be shortened totestRuntime.getInstance(..). - If you need to get an outcome of a background task execution, instead of
daemonTestRuntime.getOutcome()you need to calldaemonTestFactory.getOutcome(runtime)("daemonTestFactory" is aBQDaemonTestFactoryor subclasses likeJettyTestFactory, that are the@Rule's in your test). - Use factory API (the same approach as in the previous point) if you need to manually start/stop the daemon runtime:
daemonTestFactory.start(runtime),daemonTestFactory.stop(runtime). - If you need to capture STDOUT or STDERR of a specific BQRuntime run, use the new
TestIOclass that can capture this data. It additionally allows to suppress trace logging, making your test console much less verbose than before. E.g.:
TestIO io = TestIO.noTrace(); testFactory.app("-x") .bootLogger(io.getBootLogger()) .createRuntime() .run(); assertEquals("--out--", io.getStdout()); assertEquals("--err--", io.getStderr());
Other modules that have been affected by this change are bootique-jetty-test, bootique-undertow-test, bootique-jdbc-test, bootique-cayenne-test.
-
bootique-liquibase #16: Names of Liquibase module commands have been changed by adding prefix "lb" to distinguish them from commands of others modules.
Old options:
--changelog-sync Mark all changes as executed in the database. --changelog-sync-sql Writes SQL to mark all changes as executed in the database to STDOUT. --clear-check-sums Clears all checksums in the current changelog, so they will be recalculated next update. -u, --update Updates DB with available migrations -v, --validate Checks the changelog for errors.New options:
--lb-changelog-sync Mark all changes as executed in the database. --lb-changelog-sync-sql Writes SQL to mark all changes as executed in the database to STDOUT. --lb-clear-check-sums Clears all checksums in the current changelog, so they will be recalculated next update. -u, --lb-update Updates DB with available migrations -v, --lb-validate Checks the changelog for errors.
Short names has been preserved for partial backwards compatibility.
- bootique-cayenne #36: If you used
bootique-cayenne-jcache, note that a big chunk of its functionality is now handled by Cayenne itself. From the upgrade perspective only one thing is affected: if you ever used customInvalidationHandler, you will need to switch that toorg.apache.cayenne.lifecycle.cache.InvalidationHandlerthat has a slightly different method signature (due to the need to keep Java 7 compatibility in Cayenne 4.0).
-
bootique #105: The new default style for multi-word command classes that are spelled in camel-case will result in the name parts separated with dash, while previously we'd use no separators. E.g.
MySpecialCommand.javawill result in command name being "--myspecial" in 0.20, and "--my-special" in 0.21. This affects you if you've written custom command classes with multi-word names. You can manually override public command names in metadata to return to the old style (see CommandWithMetadata) or embrace the new naming scheme. -
bootique #112: The implementation of this feature has a few (intentional) side-effects: (1) joptsimple library was upgraded to 5.0.6, (2) CLI option abbreviations are no longer supported. You may have not known this, but before 0.21, you could use partial option names (e.g. "--he" for help). Not anymore. Now either a short option or a long option with full name must be used (i.e. "-h" or "--help" in case of the help command).
-
bootique #113: Classes in
io.bootique.applicationpackage were moved underio.bootique.meta.applicationin an effort to centralize Bootique metadata facilities. If you referenced them in your code, you will need to fix the imports and recompile. This will primarily affect custom Commands. -
bootique-jdbc #6: bootique-jdbc uses Tomcat DataSource that has a few dozens of config properties. As we migrated JDBC configuration from a map to a specific class, we dropped support for certain noop properties there were supported but ignored in the previous configuration. If you get configuration errors, review your configs and remove those properties. Additionally the following properties are treated differently than before:
connectionPropertiesproperty is not supported (as it is unclear why it may be useful)jmxEnableddefault is changed from true to false.object_nameis renamed tojmxObjectName.
-
bootique-liquibase #4: 'liquibase.changeLog' YAML config property is deprecated, but still supported. The new alternative is 'changeLogs' collection. When migrating to 'changeLogs', ensure that you rewrite the paths in Bootique YAML files as well as in Liquibase XML/YAML change logs to follow Bootique ResourceFactory approach. Specifically, if the resource is expected to be on classpath, it requires "classpath:" prefix. Otherwise it will be treated as a file path.
-
bootique-logback #26: 'log.level' and 'log.loggers..level' must be specified in lowercase. I.e.
level: debuginstead oflevel: DEBUG. Uppercase values will now cause an exception. -
bootique-job #15: 'scheduler.jobPropertiesPrefix' property is no longer supported in configuration and needs to be removed from the config files, etc. Parameters for individual jobs should now be specified under 'params' key (previously they were specified under the job's name).
# prior to 0.21
jobs:
myjob:
param1: value1
# starting with 0.21
jobs:
myjob:
params:
param1: value1-
bootique #92: We created a new application metadata package at
io.bootique.application. The existing metadata objects where moved to this package from different places. Specificallyio.bootique.command.CommandMetadatawas moved andio.bootique.cli.CliOptionwas moved and renamed toOptionMetadata. This is a breaking change. You will need to use module versions aligned with 0.20 Bootique BOM and fix any imports in your own code (especially in custom Commands). -
bootique #97: We simplifed integration test API. It now looks pretty much the same as a regular
main(String[])method. There's no longer a need to use "configurator" lambda to configure test runtime. Instead you'd call Bootique-like methods on the test factory. When upgrading your tests you will need to change calls onBQTestFactoryandBQDaemonTestFactoryfromnewRuntime()toapp(args). Terminating builder methods no longer take args (it is passed in the "app" method at the start of the chain). Pay attention to deprecating warnings and use your IDE for available APIs of the test factories. -
bootique-jetty #52:
JettyTestFactoryreceived the same API upgrades asBQTestFactoryandBQDaemonTestFactoryas described above. The upgrade instructions are similar.
The biggest change in 0.19 is combining modules under com.nhl.bootique and io.bootique into a single
namespace - io.bootique. To upgrade, you will need to change module group names in your POM, Java package
names in imports, and the name of service provider files in your modules. Details are provided below:
- If you used Bootique-provided parent pom, in your
pom.xmlchange the parent declaration:
<parent>
<groupId>io.bootique.parent</groupId>
<artifactId>bootique-parent</artifactId>
<version>0.12</version>
</parent>-
Change all group names of Maven artifacts in your
pom.xmlfromcom.nhl.bootique.*toio.bootique.*. Module names are preserved. -
Use
io.bootiqueBOM, removecom.nhl.bootiqueBOM:
<dependency>
<groupId>io.bootique.bom</groupId>
<artifactId>bootique-bom</artifactId>
<version>0.19</version>
<type>pom</type>
<scope>import</scope>
</dependency>Note that there was a brief period of time (0.18) when required both BOMs to be imported. Not anymore. io.bootique
one is sufficient now.
-
Look for Java compilation errors in your IDE, and change
com.nhl.bootique.*import statements toio.bootique.*. -
If you've written any auto-loadable modules, you will have
META-INF/services/com.nhl.bootique.BQModuleProviderfiles sitting somewhere in your source.Rename these files toMETA-INF/services/io.bootique.BQModuleProvider. -
Similarly if you've written any polymorphic config extensions, your sources will have
META-INF/services/com.nhl.bootique.config.PolymorphicConfigurationfiles somewhere. Rename these files toMETA-INF/services/io.bootique.config.PolymorphicConfiguration.
-
bootique-cayenne #12 :
CayenneModule.builder()is removed. Instead of using the builder, use YAML (or another form of) configuration. If you need a project-less Cayenne stack, simply do not reference any Cayenne projects (and make sure "cayenne-project.xml" is not on classpath). -
bootique-curator #4 :
bootique-zookeeperwas renamed tobootique-curator, so the dependency import and Java package names need to be changed accordingly.
- bootique #62 : To fully take advantage of the default main class, make
sure you upgrade
com.nhl.bootique.parent:bootique-parentto version 0.11.
- bootique-cayenne #9 : CayenneModule
noConfigandconfigNamemethods are moved into a builder, and constructor is made private. Now to set cayenne-...xml via API use something like this:
CayenneModule.builder()./* configure module */.build();- bootique-jdbc #4 : Instrumentation is removed from
bootique-jdbcand into a separatebootique-jdbc-instrumentedmodule.If you relied on the DataSource metrics, change your import to the new Module.
-
Command API has been redone. If you have modules or apps that implement Commands, you will need to update those. Sample commands can be found in our modules, e.g. bootique-jobs.
-
@Args annotation was moved to "com.nhl.bootique.annotation" package from "com.nhl.bootique.jopt". Update your imports.
-
Now only one command can match command line options. THis was true before, but wasn't enforced. So you may see certain command line configs failing with errors, where they appeared to work before by pure chance.
-
BQBinder is deprecated. From within your Module use static methods on BQCoreModule to contribute Module-specific commands, properties, CLI options.