This is the root project for FeatJAR, a collection of Java libraries for feature-oriented software development, planned to replace the FeatureIDE library, starting with FeatureIDE 4.0.0. Please report feedback to [email protected] or [email protected].
For developers who intend to push changes, we recommend to run git config --global url.ssh://[email protected]/.insteadOf https://github.com/
(do not forget the trailing slash) beforehand to push/pull repositories over SSH instead of HTTPS.
Run the following in a shell:
sudo apt update
sudo apt install git openjdk-11-jdk
git clone https://github.com/FeatureIDE/FeatJAR.git && cd FeatJAR
scripts/clone.bat
./gradlew build
Installation on other Linux distributions may differ slightly, depending on the package manager.
Assuming Chocolatey is installed, run the following in cmd.exe
:
choco install git openjdk11
git clone https://github.com/FeatureIDE/FeatJAR.git && cd FeatJAR
scripts\clone.bat
gradlew build
Alternatively, follow the steps for Ubuntu in a WSL shell.
Assuming Homebrew is installed, run the following in a shell:
brew update
brew install git openjdk@11
git clone https://github.com/FeatureIDE/FeatJAR.git && cd FeatJAR
scripts/clone.bat
./gradlew build
Assuming Git and Docker are installed, run the following in a shell (or, on Windows, in WSL):
git clone https://github.com/FeatureIDE/FeatJAR.git && cd FeatJAR
scripts/clone.bat
docker run -v "$(pwd)":/home/gradle gradle:8.0.2-jdk11 gradle build
Besides building and testing all modules, Gradle supports many commands to control the build process, including:
# assemble all modules as JARs and run all tests (= assemble + check)
./gradlew build
# assemble all modules as JARs, skipping all tests
./gradlew assemble
# run all tests for all modules, skipping JAR assembly
./gradlew check
# run the FeatJAR command-line interface with the specified arguments
./gradlew :cli:run --args "<arguments>"
# run a task (e.g., 'build') only for the specified module (e.g., 'base') and its dependencies
./gradlew :<module>:<task>
# print a comprehensive list of tasks
gradle :<module>:tasks
# count feature model solutions
java -jar cli/build/libs/cli-*-all.jar --command countsharpsat --input cli/src/test/resources/testFeatureModels/car.xml
# or, equivalently, using Gradle
./gradlew :cli:run --args " --command countsharpsat --input src/test/resources/testFeatureModels/car.xml"
In addition to the repositories under the FeatureIDE organization, several other tools and evaluations rely on FeatJAR as a library, for example:
- tseitin-or-not-tseitin: Automated evaluation of CNF transformations' impact on feature-model analyses
- variED-NG: A collaborative, real-time feature model editor
To use FeatJAR during FeatureIDE development, import the FeatJAR root folder as a Gradle project with default settings in Eclipse (File > Import... > Gradle > Existing Gradle project
).
Then you can use any FeatJAR repository (e.g., util
) in any Eclipse project by adding it to the project's build path (Right click project > Properties > Java Build Path > Projects > Add...
).
FeatJAR development team:
- Thomas Thüm (University of Ulm, Germany)
- Sebastian Krieter (University of Ulm, Germany)
- Elias Kuiter (University of Magdeburg, Germany)
Further contributors and former project members:
- Katjana Herbst (University of Ulm, Germany)
- Daniel Hohmann (University of Magdeburg, Germany)
- Timo Zuccarello (University of Ulm, Germany)