Common base utilities

Provides utilities to simplify common development tasks

License

License

GroupId

GroupId

es.upv.grycap.coreutils
ArtifactId

ArtifactId

coreutils-common
Last Version

Last Version

0.2.0
Release Date

Release Date

Type

Type

jar
Description

Description

Common base utilities
Provides utilities to simplify common development tasks
Project URL

Project URL

https://github.com/grycap/coreutils
Project Organization

Project Organization

GRyCAP

Download coreutils-common

How to add to project

<!-- https://jarcasting.com/artifacts/es.upv.grycap.coreutils/coreutils-common/ -->
<dependency>
    <groupId>es.upv.grycap.coreutils</groupId>
    <artifactId>coreutils-common</artifactId>
    <version>0.2.0</version>
</dependency>
// https://jarcasting.com/artifacts/es.upv.grycap.coreutils/coreutils-common/
implementation 'es.upv.grycap.coreutils:coreutils-common:0.2.0'
// https://jarcasting.com/artifacts/es.upv.grycap.coreutils/coreutils-common/
implementation ("es.upv.grycap.coreutils:coreutils-common:0.2.0")
'es.upv.grycap.coreutils:coreutils-common:jar:0.2.0'
<dependency org="es.upv.grycap.coreutils" name="coreutils-common" rev="0.2.0">
  <artifact name="coreutils-common" type="jar" />
</dependency>
@Grapes(
@Grab(group='es.upv.grycap.coreutils', module='coreutils-common', version='0.2.0')
)
libraryDependencies += "es.upv.grycap.coreutils" % "coreutils-common" % "0.2.0"
[es.upv.grycap.coreutils/coreutils-common "0.2.0"]

Dependencies

compile (5)

Group / Artifact Type Version
com.google.code.findbugs : jsr305 jar 3.0.1
com.google.guava : guava jar 19.0
org.apache.commons : commons-lang3 jar 3.4
commons-io : commons-io jar 2.4
com.typesafe : config jar 1.3.0

provided (1)

Group / Artifact Type Version
org.slf4j : slf4j-api jar 1.7.13

test (2)

Group / Artifact Type Version
es.upv.grycap.coreutils : coreutils-test jar 0.2.0
org.slf4j : slf4j-simple jar 1.7.13

Project Modules

There are no modules declared in this project.

Core Utils: tools to facilitate the development of Java-based applications

License Build Status Coverage Status Maven Central

The coreutils project contains several core libraries that deal with the following aspects of software development: providing common and extensible configuration across different application modules, executing ordered shutdown sequences when the JVM shutdowns, running tasks in a custom thread pool, allowing publish-subscribe-style communication between components without requiring them to explicitly register with one another, providing commonly-used clients (HTTP, REST) integrated with with green threads (fibers) to minimize the performance impact in virtual environments, installing logging bridges to unify logging across the entire application, maintaining testing groups and rules.

This project requires Java 1.8 or higher.

What is coreutils?

Coreutils is a toolkit for developing highly concurrent and distributed applications in Java. Every new release starts from the available technologies and choose carefully a core of components that is configured in coreutils to leverage their strengths and to simplify the development, testing and deployment of new Java applications.

Coreutils is an open-source software that can be used as an SDK or can be taken as a code base for developing custom applications.

What is not coreutils?

Coreutils is not a framework, nor a utility library. Coreutils puts a very thin layer on top of the underlying technologies, providing the necessary glue to integrate heterogeneous, already existing components into coherent applications. In many cases, coreutils will expose parts of the original APIs in especial to avoid data transfer from different data formats or storages. This make assuring backward compatibility impossible.

For Java frameworks and utility libraries take a look at the following (incomplete) list:

Latest release

Add a dependency on coreutils using Maven:

<dependency>
    <groupId>es.upv.grycap.coreutils</groupId>
    <artifactId>coreutils</artifactId>
    <version>0.2.0</version>
</dependency>

Using or extending coreutils

Despite Coreutils is an unopinionated toolkit, there are several aspects of the project configuration that deserve attention when using coreutils to develop a custom application. Coreutils includes testing groups and rules that can be used to isolate tests. These are used in the project itself to control the test output and to run the test groups in different build phases. Coreutils uses Maven profiles that are activated via environment properties.

These notes are also valid for extending coreutils.

Environment variables

  • grycap.tests.print.out set value to true to print tests output to the console and to write log messages to a temporary file. Otherwise, no messages are displayed.

  • grycap.deploy.release set value to true to release the project to the Maven Central repository. This requires proper configuration of the OSSRH credentials and access to the project's repository. The script ossrh-deploy.sh provides further information about deployment.

Run all tests, logging to the console

$ mvn clean verify -Dgrycap.tests.print.out=true |& tee /tmp/LOGFILE

To include only a specific submodule add the -pl to the arguments. For example, include the following to test only the submodule coreutils-common: -pl coreutils-common.

Run sanity and functional tests, logging to the console

$ mvn clean test -Dgrycap.tests.print.out=true |& tee /tmp/LOGFILE

Continuous integration

Continuous integration and code coverage are configured within the default Maven profile in the verify build phase.

$ mvn clean verify coreutils

Install to local Maven repository

$ mvn clean install coreutils

Examples (pending)

  • Spring Boot + Undertow

TO-DO list

  1. Integrate naming tools.
  2. HTTP2 client: get access to the underlying OkHttpClient instance by cloning the client.
  3. Add more tests.
es.upv.grycap.coreutils

GRyCAP

Grid y Computación de Altas Prestaciones

Versions

Version
0.2.0