This documentation is still under construction.

1. Using JoinFaces

Table 1. Official example projects
Build tool \ packaing jar war

Maven

maven-jar-example

maven-war-example

Gradle

gradle-jar-example

gradle-war-example

1.1. System Requirements

Table 2. System Requirements
Joinfaces Java Spring Boot JSF

3.3

1.8 to 11

2.1

2.0 to 2.3

3.0 to 3.2

1.8

2.0

2.0 to 2.3

2.x

1.6 to 1.8

1.x

2.0 to 2.2

This are the combinations we have tested and expect to work, but depending on the features you are using, other combinations might work, too.

1.2. Dependency Management

Each release of JoinFaces provides a curated list of dependencies that it supports. This list is an extension of Spring Boot’s dependency management and therefore works exactly the same way.

The joinfaces-dependencies BOM also imports the spring-boot-dependencies BOM. If you want to override the imported Spring Boot version, make sure to specify the Spring Boot BOM after the JoinFaces one.

1.3. Maven

Please also consult the official Spring Boot documentation: Link
<project>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.joinfaces</groupId>
                <artifactId>joinfaces-dependencies</artifactId>
                <version>3.3.0-rc5</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

1.4. Gradle

Please also consult the official Spring Boot documentation: Link
plugins {
    id 'org.joinfaces' version '3.3.0-rc5'
}
apply plugin: 'java' //or 'war'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

dependencies {
    compile 'org.joinfaces:jsf-spring-boot-starter'
}

1.4.1. Not using the JoinFaces gradle plugin

plugins {
    id 'org.springframework.boot' version '2.1.1.RELEASE'
}
apply plugin: 'java' //or 'war'
apply plugin: 'io.spring.dependency-management'

dependencyManagement {
    imports {
        mavenBom 'org.joinfaces:joinfaces-dependencies:3.3.0-rc5'
    }
}

dependencies {
    compile 'org.joinfaces:jsf-spring-boot-starter'
}

2. Features

3. Maven Plugin

4. Gradle Plugin

JoinFaces provides some Gradle plugins to simplify the development.

When using the JoinFaces Gradle plugins, you might want to use the Spring Boot gradle plugin, too.

4.1. org.joinfaces

The org.joinfaces plugin is the main plugin. It does nothing on it’s own, but conditionally applies the other plugin in reaction to the plugins present in the project.

If defaults in the org.joinfaces plugin don’t work for you, you can just include the sub-plugins you need instead.

4.2. org.joinfaces.dependency-management

This plugin is applied by the main plugin if the io.spring.dependency-management plugin is applied to the current project. If this plugin is applied directly it will apply the io.spring.dependency-management itself.

In both cases it configures the dependency management plugin to use the JoinFaces Dependency Management.

This is similar to what the Spring Boot Gradle plugin does.

4.3. org.joinfaces.classpath-scan

This plugin configures a classpath scan at build-time in order to reduce the startup time of applications which use an embedded servlet container.

For each source-set the runtimeClasspath configuration and the output of the compile tasks for java, groovy, scala and kotlin will be scanned.

If you have any problems with the classpath scan, you can disable it:

scanClasspath.enabled = false