/sw360

SW360 project

Primary LanguageJavaOtherNOASSERTION

Eclipse Public License 2.0 SW360 Build and Test Slack Channel Changelog GitHub release (latest by date)

SW360 Portal

A software component catalogue application.

SW360 is a server with a REST interface and a Liferay CE portal application to maintain your projects / products and the software components within.

It can manage SPDX files for maintaining the license conditions and maintain license information.

Introduction

It is comprised of one frontend (portal) part, backend (services) part and additionally a REST API:

  • Frontend: Liferay-CE-(Tomcat-)based portal application using portlets.
  • Backend: Tomcat-based thrift services for being called by different applications.
  • Database: we store software components and metadata about them in CouchDB.
  • Rest: this REST API provides access to project resources for external integration.

The reference platform is the Ubuntu server 22.04 (which is an LTS version).

Project structure

This is a multi module maven file. please consider that we have the following modules:

  • frontend: For portlets, themes and layouts, the liferay part.
  • backend: For the thrift based services.
  • libraries: For general stuff that is reused among the above, for example, couchdb access.
  • scripts: Auxiliary scripts to help build, deploy and config system
  • rest: For the REST API which contains an authorization and resource server.

Issues

If you run in any issues with documentation or software, please be kind and report to our Github issues area.

Deployment

Is recommended using the docker based setup, described here.

If you intend to install in a bare metal machine or use in your own virtualizaed system, bare metal instructions are provided here.

Development

If you intend to develop over SW360, few steps are needed as equal you need have base requirements

  • Base build requirements
    • Java 11
    • Maven 3.8.7
    • pre-commit
    • thrift 0.16.0 runtime
    • Python environment ( to pre-commit ) - SW360 use Eclipse formatting rules through Spotless maven plugin

If you can't install thrift 0.16 runtime, you will need the following requirements:

  • C++ dev environment
  • cmake Then run the current build script:
./scripts/install-thrift.sh

Local Building

Step 1: Prepare source code

git clone https://github.com/eclipse/sw360.git
cd sw360
pip install pre-commit
pre-commit install

Step 2: Build the code (without tests and docs)

mvn package -P deploy \
    -Dhelp-docs=false \
    -DskipTests \
    -Djars.deploy.dir=deploy \
    -Drest.deploy.dir=webapps \
    -Dliferay.deploy.dir=webapps \
    -Dbackend.deploy.dir=webapps

If you want run the the tests, we need start a local couchdb server and Docker is required:

Step 3:

pip install mkdocs-material
./scripts/startCouchdbForTests.sh

mvn package -P deploy \
    -Djars.deploy.dir=deploy \
    -Drest.deploy.dir=webapps \
    -Dliferay.deploy.dir=webapps \
    -Dbackend.deploy.dir=webapps

To check your code linting without commit:

mvn spotless:check

Please refer to SW360 main documentation website for more details.

License

SPDX-License-Identifier: EPL-2.0

This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at https://www.eclipse.org/legal/epl-2.0/