All Projects → forax → Pro

forax / Pro

Licence: gpl-3.0
A Java build tool that works seamlessly with modules

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Pro

Ygor
Task toolkit. For when `npm run` isn't enough and everything else is too much.
Stars: ✭ 69 (-21.59%)
Mutual labels:  build-tool
Projectbuilder
A tool for easy automating and customizing build process for Unity.
Stars: ✭ 80 (-9.09%)
Mutual labels:  build-tool
Dbuild
Multi-project build tool, based on sbt.
Stars: ✭ 84 (-4.55%)
Mutual labels:  build-tool
Css Vars Ponyfill
Client-side support for CSS custom properties (aka "CSS variables") in legacy and modern browsers
Stars: ✭ 1,166 (+1225%)
Mutual labels:  module
Sbt Dependency Graph
sbt plugin to create a dependency graph for your project
Stars: ✭ 1,223 (+1289.77%)
Mutual labels:  build-tool
Docker Builder
Docker builder builds Docker images from a friendly config file.
Stars: ✭ 81 (-7.95%)
Mutual labels:  build-tool
Annotationkit
The annotation implementation using Objective-C
Stars: ✭ 68 (-22.73%)
Mutual labels:  module
Mendel
A build toolchain for experimentation on isomorphic web applications with tree-inheritance and multivariate support.
Stars: ✭ 86 (-2.27%)
Mutual labels:  build-tool
Abp.aspnetcore.mvc.ui.theme.adminlte
An ABP theme module based on AdminLTE
Stars: ✭ 80 (-9.09%)
Mutual labels:  module
Rambuild
A plugin to make builds in gradle run on ram instead of the hard drive
Stars: ✭ 84 (-4.55%)
Mutual labels:  build-tool
Simplenews.io
🏸 A news App,based on the RxJava 、MVP. 基于MVP、RxJava 、Android 组件化的新闻博客客户端.
Stars: ✭ 74 (-15.91%)
Mutual labels:  module
Sake Core
Sake's core interface.
Stars: ✭ 78 (-11.36%)
Mutual labels:  build-tool
Dynamopython
Python Modules for Dynamo
Stars: ✭ 84 (-4.55%)
Mutual labels:  module
Reexport.jl
Julia macro for re-exporting one module from another
Stars: ✭ 69 (-21.59%)
Mutual labels:  module
Npm Scripts Info
Display the description of your npm scripts
Stars: ✭ 85 (-3.41%)
Mutual labels:  build-tool
Invoice It
📃 Generate your orders or your invoices and export them in html, pdf or buffer easily.
Stars: ✭ 69 (-21.59%)
Mutual labels:  module
Acmailer
Mail sending module for Mezzio and Laminas MVC with support for file attachment and template email composition
Stars: ✭ 80 (-9.09%)
Mutual labels:  module
Postinstall Build
Helper for conditionally building your npm package on postinstall
Stars: ✭ 87 (-1.14%)
Mutual labels:  build-tool
Libvmod Querystring
Query-string module for Varnish Cache
Stars: ✭ 85 (-3.41%)
Mutual labels:  module
Decent Messup
Mess up js code in a different way
Stars: ✭ 84 (-4.55%)
Mutual labels:  build-tool

Linux build status Windows build status

pro

A Java build tool that works seamlessly with modules

No need to be a maven to be able to use a build tool

rationale

With the introduction of modules in Java 9, creating modules/jars is easier and new applications will tend to have many more, smaller modules than before. The build model of Maven is not well suited to describe this new world.

principles

  • programmatic API first
  • use convention over configuration
  • stateless plugins
  • separate configuration time where configuration is mutable and build time where configuration is immutable
  • external dependencies are in plain sight (in the deps folder)

anatomy of a build.pro

pro uses a file named build.pro as build script, which is composed of two parts, the configuration part and the run part. In the configuration part, you can set the properties of a specific plugin, by example, this how to set the release version of the source to Java 11 for the compiler

  compiler.sourceRelease(11)

you can chain the calls, by example to set the source release and use the preview features

  compiler.
    sourceRelease(11).
    enablePreview(true)

Note: pro uses jshell to parse the build.pro, this tool is line oriented so you have to put the dot '.' at the end of the line to ask for the parsing of the next line.

Then you have to call run() with all the commands you want to execute, by example,

  run(compiler, packager)

to run the compiler on the sources and uses the packager to create a jar.

Here is a list of the main plugins

  • resolver use Maven artifact coordinates to download the dependencies
  • modulefixer patch the artifacts downloaded to make them fully compatible with the module-path
  • compiler compile the sources and the tests
  • tester run the JUnit 5 tests
  • docer generate the javadoc
  • runner run the main() of the main class of the main module.

getting started

To create the layout of a minimal project, you can use the option scaffold

  mkdir myproject
  cd myproject
  pro scaffold 

scaffold will ask for a module name (a name in reverse DNS form like a kind of root package) and will generate a skeleton of the folders.

Then you can run pro to build your project

  pro

demo

There is a small demo in the github project pro-demo.

build instructions

To compile and build pro, run:

build.sh

pro will bootstrap itself.

To build pro you need the jdk11 or a more recent version, you may have to change the value of the variable JAVA_HOME at the start of the script build.sh.

Once built, you have an image of the tool in target/pro. This image embeds its own small JDK: no need to install anything Java-related to be able to build your application. Obviously, you will need a JDK to run your application.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].