Code Monkey home page Code Monkey logo

featjar's Introduction

FeatJAR

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].

How to Build

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.

On Ubuntu

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.

On Windows

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.

On macOS

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

Using Docker

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:7.5.1-jdk11 gradle build

More about Gradle

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

How to Use

As an Executable

# 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"

As a Library

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

In FeatureIDE

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...).

Contributors

FeatJAR development team:

Further contributors and former project members:

  • Katjana Herbst (University of Ulm, Germany)
  • Daniel Hohmann (University of Magdeburg, Germany)
  • Timo Zuccarello (University of Ulm, Germany)

featjar's People

Contributors

ekuiter avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.