001/*
002 * JDrupes Builder
003 * Copyright (C) 2025, 2026 Michael N. Lipp
004 * 
005 * This program is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
017 */
018
019package org.jdrupes.builder.api;
020
021import java.nio.file.Path;
022
023/// General project properties.
024///
025@SuppressWarnings("PMD.FieldNamingConventions")
026public final class CoreProperties {
027
028    /// The Build directory. Created artifacts should be put there.
029    /// Defaults to [Path] "build".
030    public static final PropertyKey<Path> BuildDirectory
031        = new PropertyKey<>(Path.of("build"));
032
033    /// The Encoding of files in the project.
034    public static final PropertyKey<String> Encoding
035        = new PropertyKey<>("UTF-8");
036
037    /// The version of the project. Surprisingly, there is no
038    /// agreed upon version type for Java (see e.g. 
039    /// ["Version Comparison in Java"](https://www.baeldung.com/java-comparing-versions)).
040    /// Therefore the version is represented as a string with "0.0.0"
041    /// as default.
042    public static final PropertyKey<String> Version
043        = new PropertyKey<>("0.0.0");
044
045    private CoreProperties() {
046        // Make javadoc happy.
047    }
048}