Skip to content

Latest commit

History

History
276 lines (210 loc) 路 6.72 KB

File metadata and controls

276 lines (210 loc) 路 6.72 KB

Spec

JReleaser can generate and publish a RPM Spec file and publish it to a repository that you have access to.

The spec section specifies how the Spec should be created.

The following artifact extensions are supported by this packager:

  • .tbz2

  • .tgz

  • .txz

  • .tar.gz

  • .tar.xz

  • .tar.bz2

  • .tar

  • .zip

Distribution Support

Distribution Supported

concepts:distributions/binary.adoc

{icon_req_y}

concepts:distributions/flat-binary.adoc

{icon_req_y}

concepts:distributions/java-binary.adoc

{icon_req_y}

concepts:distributions/jlink.adoc

{icon_req_y}

concepts:distributions/native-image.adoc

{icon_req_y}

concepts:distributions/native-package.adoc

{icon_req_n}

concepts:distributions/single-jar.adoc

{icon_req_n}

Warning
Publication of snapshots is not allowed.
YAML
partial$packagers/yaml/common-head.adoc

partial$packagers/yaml/template-directory.adoc

partial$packagers/yaml/commitauthor.adoc

partial$packagers/yaml/tap.adoc

partial$packagers/yaml/package-name.adoc

    # Spec release number.
    # Defaults to `1%{?dist}`.
    # [dot circle]
    release: '1%{?dist}'

    # List of package requirements.
    # Defaults to `[java]`.
    # [exclamation triangle]
    categories:
      - 'java'
TOML
partial$packagers/toml/common-head.adoc

partial$packagers/toml/template-directory.adoc

partial$packagers/toml/commitauthor.adoc

partial$packagers/toml/tap.adoc

partial$packagers/toml/package-name.adoc

  # Spec release number.
  # Defaults to `1%{?dist}`.
  # [dot circle]
  release = "1%{?dist}"

  # List of package requirements.
  # Defaults to `[java]`.
  # [exclamation triangle]
  categories = ["java"]
JSON
partial$packagers/json/common-head.adoc

partial$packagers/json/template-directory.adoc

partial$packagers/json/commitauthor.adoc

partial$packagers/json/tap.adoc

partial$packagers/json/package-name.adoc

      // Spec release number.
      // Defaults to `1%{?dist}`.
      // [dot circle]
      "release": "1%{?dist}",

      // List of package requirements.
      // Defaults to `[java]`.
      // [exclamation triangle]
      "categories": ["java"],
partial$packagers/json/common-footer.adoc
Maven
partial$packagers/maven/common-head.adoc

partial$packagers/maven/template-directory.adoc

partial$packagers/maven/commitauthor.adoc

partial$packagers/maven/tap.adoc

partial$packagers/maven/package-name.adoc

      <!--
        Spec release number.
        Defaults to `1%{?dist}`.
        [dot circle]
      -->
      <release>1%{?dist}</release>

      <!--
        List of package requirements.
        Defaults to `[java]`.
        [exclamation triangle]
      -->
      <categories>java</categories>
partial$packagers/maven/common-footer.adoc
Gradle
partial$packagers/gradle/common-head.adoc

partial$packagers/gradle/template-directory.adoc

partial$packagers/gradle/commitauthor.adoc

partial$packagers/gradle/tap.adoc

partial$packagers/gradle/package-name.adoc

      // Spec release number.
      // Defaults to `1%{?dist}`.
      // [dot circle]
      release = '1%{?dist}'

      // List of package requirements.
      // Defaults to `[java]`.
      // [exclamation triangle]
      categories = ['java']
partial$packagers/gradle/common-footer.adoc

Example

Assuming the current version is 1.2.3, and a distribution named app, the above configuration will generate a app.spec file in the duke/duke-spec repository:

Name:      app
Version:   1.2.3
Release:   1%{?dist}
Summary:   Sample App

License:   Apache-2.0
URL:       https://acme.com/app
Source0:   https://github.com/duke/app/releases/download/v1.2.3/app-1.2.3.tar.gz

BuildArch: noarch
Requires:  java

%description
Sample app

%prep
%setup -q

%install
mkdir -p %{buildroot}%{_bindir}
%define _appdir %{buildroot}%{_datadir}/%{name}
mkdir -p %{_appdir}/bin

cat > %{buildroot}%{_bindir}/app <<-EOF
#!/bin/sh
%{_datadir}/%{name}/bin/app "$@"
EOF
chmod 0755 %{buildroot}%{_bindir}/app

mkdir -p %{_appdir}/lib
install -p -m 755 bin/app %{_appdir}/bin/app
install -p -m 644 lib/app-%{version}.jar %{_appdir}/lib/app-%{version}.jar

%files
%{_bindir}/%{name}
%{_datadir}/%{name}/bin/app
%{_datadir}/%{name}/lib/app-%{version}.jar

You may configure automated builds with Fedora COPR or any other service that accepts spec files as inputs.

Skip Artifacts

If there is more than one matching artifact in a given distribution you may add a skipSpec extra property to the target artifact to mark it as skipped for packaging with Spec.

Templates

The default location for templates is:

src/jreleaser/distributions/<distribution-name>/spec

The following list shows the filenames that may be used to override default templates:

  • app.spec.tpl

Any additional files found in the template directories will be copied as is unless their filename ends with .tpl in which case name-templates.adoc substitution will take place.

Templates may be initialized using the template command

{icon_cli_s} template, {icon_maven_s} jreleaser:template, {icon_gradle_s} jreleaserTemplate, {icon_ant_s} jreleaser-template

Skip Templates

You may skip any template files by defining a set of skip rules in the skipTemplates property. For example, you may use any of these expressions to skip a template named README.md.tpl:

  • README.md.tpl: matches the full template name

  • README.md: matches the transformed template name

  • README.*: matches using a regex