001/* 002 * JDrupes Builder 003 * Copyright (C) 2025 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.mvnrepo; 020 021import org.jdrupes.builder.api.Resource; 022 023/// Represents a reference to a resource in a Maven repository. 024/// 025public interface MvnRepoResource extends Resource { 026 027 /// Group id. 028 /// 029 /// @return the string 030 /// 031 String groupId(); 032 033 /// Artifact id. 034 /// 035 /// @return the string 036 /// 037 String artifactId(); 038 039 /// Classifier. 040 /// 041 /// @return the string (defaults to "") 042 /// 043 String classifier(); 044 045 /// Maven type. 046 /// 047 /// @return the string (defaults to "") 048 /// 049 String mvnType(); 050 051 /// Returns the version. 052 /// 053 /// @return the string or "" if no version was specified. 054 /// 055 String version(); 056 057 /// Return the maven coordinates as "groupId:artifactId:version". 058 /// 059 /// @return the string 060 /// 061 default String coordinates() { 062 return groupId() + ":" + artifactId() 063 + (classifier().isBlank() ? "" : ":" + classifier()) 064 + (mvnType().isBlank() ? "" : ":" + mvnType()) 065 + (version() == null ? "" : ":" + version()); 066 067 } 068}