gopom

package module
v0.0.0-...-1bcbd2a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 14, 2023 License: MIT Imports: 4 Imported by: 0

README

gopom - a maven pom.xml parser

Tests Go Report Card

gopom is a Golang module to easily parse and work with maven pom.xml files.

Note: This repository build upon da fork of vifraa/gopom

Supports the offical pom.xml structure that can be read about here.

Installation

go get -u github.com/akadir/gopom

Usage

To load and parse a pom.xml file it is possible to use the gopom.Parse(path string) function which will load the file at the given path and return the parsed pom.
See below for example:

package main

import (
	"github.com/akadir/gopom"
	"log"
)

func main() {

	var pomPath string = ... // Path to the pom.xml file
	parsedPom, err := gopom.Parse(pomPath)
	if err != nil {
		log.Fatal(err)
	}
}

If one already has the pom.xml loaded as a string or bytes you can use encoding/xml from the standard library.
This can be seen below:

package main

import (
	"encoding/xml"
	"github.com/akadir/gopom"
	"log"
)

func main() {
	var pomString string = ... // The pom string

	var parsedPom gopom.Project
	err := xml.Unmarshal([]byte(pomString), &parsedPom)
	if err != nil {
		log.Fatal(err)
	}
}

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

Licensed under MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Activation

type Activation struct {
	ActiveByDefault *bool               `xml:"activeByDefault,omitempty"`
	JDK             *string             `xml:"jdk,omitempty"`
	OS              *ActivationOS       `xml:"os,omitempty"`
	Property        *ActivationProperty `xml:"property,omitempty"`
	File            *ActivationFile     `xml:"file,omitempty"`
}

type ActivationFile

type ActivationFile struct {
	Missing *string `xml:"missing,omitempty"`
	Exists  *string `xml:"exists,omitempty"`
}

type ActivationOS

type ActivationOS struct {
	Name    *string `xml:"name,omitempty"`
	Family  *string `xml:"family,omitempty"`
	Arch    *string `xml:"arch,omitempty"`
	Version *string `xml:"version,omitempty"`
}

type ActivationProperty

type ActivationProperty struct {
	Name  *string `xml:"name,omitempty"`
	Value *string `xml:"value,omitempty"`
}

type Build

type Build struct {
	SourceDirectory       *string      `xml:"sourceDirectory,omitempty"`
	ScriptSourceDirectory *string      `xml:"scriptSourceDirectory,omitempty"`
	TestSourceDirectory   *string      `xml:"testSourceDirectory,omitempty"`
	OutputDirectory       *string      `xml:"outputDirectory,omitempty"`
	TestOutputDirectory   *string      `xml:"testOutputDirectory,omitempty"`
	Extensions            *[]Extension `xml:"extensions>extension,omitempty"`
	BuildBase
}

type BuildBase

type BuildBase struct {
	DefaultGoal      *string           `xml:"defaultGoal,omitempty"`
	Resources        *[]Resource       `xml:"resources>resource,omitempty"`
	TestResources    *[]Resource       `xml:"testResources>testResource,omitempty"`
	Directory        *string           `xml:"directory,omitempty"`
	FinalName        *string           `xml:"finalName,omitempty"`
	Filters          *[]string         `xml:"filters>filter,omitempty"`
	PluginManagement *PluginManagement `xml:"pluginManagement,omitempty"`
	Plugins          *[]Plugin         `xml:"plugins>plugin,omitempty"`
}

type CIManagement

type CIManagement struct {
	System    *string     `xml:"system,omitempty"`
	URL       *string     `xml:"url,omitempty"`
	Notifiers *[]Notifier `xml:"notifiers>notifier,omitempty"`
}

type Contributor

type Contributor struct {
	Name            *string     `xml:"name,omitempty"`
	Email           *string     `xml:"email,omitempty"`
	URL             *string     `xml:"url,omitempty"`
	Organization    *string     `xml:"organization,omitempty"`
	OrganizationURL *string     `xml:"organizationUrl,omitempty"`
	Roles           *[]string   `xml:"roles>role,omitempty"`
	Timezone        *string     `xml:"timezone,omitempty"`
	Properties      *Properties `xml:"properties,omitempty"`
}

type Dependency

type Dependency struct {
	GroupID    *string      `xml:"groupId,omitempty"`
	ArtifactID *string      `xml:"artifactId,omitempty"`
	Version    *string      `xml:"version,omitempty"`
	Type       *string      `xml:"type,omitempty"`
	Classifier *string      `xml:"classifier,omitempty"`
	Scope      *string      `xml:"scope,omitempty"`
	SystemPath *string      `xml:"systemPath,omitempty"`
	Exclusions *[]Exclusion `xml:"exclusions>exclusion,omitempty"`
	Optional   *string      `xml:"optional,omitempty"`
}

type DependencyManagement

type DependencyManagement struct {
	Dependencies *[]Dependency `xml:"dependencies>dependency,omitempty"`
}

type Developer

type Developer struct {
	ID              *string     `xml:"id,omitempty"`
	Name            *string     `xml:"name,omitempty"`
	Email           *string     `xml:"email,omitempty"`
	URL             *string     `xml:"url,omitempty"`
	Organization    *string     `xml:"organization,omitempty"`
	OrganizationURL *string     `xml:"organizationUrl,omitempty"`
	Roles           *[]string   `xml:"roles>role,omitempty"`
	Timezone        *string     `xml:"timezone,omitempty"`
	Properties      *Properties `xml:"properties,omitempty"`
}

type DistributionManagement

type DistributionManagement struct {
	Repository         *Repository `xml:"repository,omitempty"`
	SnapshotRepository *Repository `xml:"snapshotRepository,omitempty"`
	Site               *Site       `xml:"site,omitempty"`
	DownloadURL        *string     `xml:"downloadUrl,omitempty"`
	Relocation         *Relocation `xml:"relocation,omitempty"`
	Status             *string     `xml:"status,omitempty"`
}

type Exclusion

type Exclusion struct {
	ArtifactID *string `xml:"artifactId,omitempty"`
	GroupID    *string `xml:"groupId,omitempty"`
}

type Extension

type Extension struct {
	GroupID    *string `xml:"groupId,omitempty"`
	ArtifactID *string `xml:"artifactId,omitempty"`
	Version    *string `xml:"version,omitempty"`
}

type IssueManagement

type IssueManagement struct {
	System *string `xml:"system,omitempty"`
	URL    *string `xml:"url,omitempty"`
}

type License

type License struct {
	Name         *string `xml:"name,omitempty"`
	URL          *string `xml:"url,omitempty"`
	Distribution *string `xml:"distribution,omitempty"`
	Comments     *string `xml:"comments,omitempty"`
}

type MailingList

type MailingList struct {
	Name          *string   `xml:"name,omitempty"`
	Subscribe     *string   `xml:"subscribe,omitempty"`
	Unsubscribe   *string   `xml:"unsubscribe,omitempty"`
	Post          *string   `xml:"post,omitempty"`
	Archive       *string   `xml:"archive,omitempty"`
	OtherArchives *[]string `xml:"otherArchives>otherArchive,omitempty"`
}

type Notifier

type Notifier struct {
	Type          *string     `xml:"type,omitempty"`
	SendOnError   *bool       `xml:"sendOnError,omitempty"`
	SendOnFailure *bool       `xml:"sendOnFailure,omitempty"`
	SendOnSuccess *bool       `xml:"sendOnSuccess,omitempty"`
	SendOnWarning *bool       `xml:"sendOnWarning,omitempty"`
	Address       *string     `xml:"address,omitempty"`
	Configuration *Properties `xml:"configuration,omitempty"`
}

type Organization

type Organization struct {
	Name *string `xml:"name,omitempty"`
	URL  *string `xml:"url,omitempty"`
}

type Parent

type Parent struct {
	GroupID      *string `xml:"groupId,omitempty"`
	ArtifactID   *string `xml:"artifactId,omitempty"`
	Version      *string `xml:"version,omitempty"`
	RelativePath *string `xml:"relativePath,omitempty"`
}

type Plugin

type Plugin struct {
	GroupID       *string            `xml:"groupId,omitempty"`
	ArtifactID    *string            `xml:"artifactId,omitempty"`
	Version       *string            `xml:"version,omitempty"`
	Extensions    *string            `xml:"extensions,omitempty"`
	Executions    *[]PluginExecution `xml:"executions>execution,omitempty"`
	Dependencies  *[]Dependency      `xml:"dependencies>dependency,omitempty"`
	Inherited     *string            `xml:"inherited,omitempty"`
	Configuration *Properties        `xml:"configuration,omitempty"`
}

type PluginExecution

type PluginExecution struct {
	ID            *string     `xml:"id,omitempty"`
	Phase         *string     `xml:"phase,omitempty"`
	Goals         *[]string   `xml:"goals>goal,omitempty"`
	Inherited     *string     `xml:"inherited,omitempty"`
	Configuration *Properties `xml:"configuration,omitempty"`
}

type PluginManagement

type PluginManagement struct {
	Plugins *[]Plugin `xml:"plugins>plugin,omitempty"`
}

type PluginRepository

type PluginRepository struct {
	Releases  *RepositoryPolicy `xml:"releases,omitempty"`
	Snapshots *RepositoryPolicy `xml:"snapshots,omitempty"`
	ID        *string           `xml:"id,omitempty"`
	Name      *string           `xml:"name,omitempty"`
	URL       *string           `xml:"url,omitempty"`
	Layout    *string           `xml:"layout,omitempty"`
}

type Prerequisites

type Prerequisites struct {
	Maven *string `xml:"maven,omitempty"`
}

type Profile

type Profile struct {
	ID                     *string                 `xml:"id,omitempty"`
	Activation             *Activation             `xml:"activation,omitempty"`
	Build                  *BuildBase              `xml:"build,omitempty"`
	Modules                *[]string               `xml:"modules>module,omitempty"`
	DistributionManagement *DistributionManagement `xml:"distributionManagement,omitempty"`
	Properties             *Properties             `xml:"properties,omitempty"`
	DependencyManagement   *DependencyManagement   `xml:"dependencyManagement,omitempty"`
	Dependencies           *[]Dependency           `xml:"dependencies>dependency,omitempty"`
	Repositories           *[]Repository           `xml:"repositories>repository,omitempty"`
	PluginRepositories     *[]PluginRepository     `xml:"pluginRepositories>pluginRepository,omitempty"`
	Reporting              *Reporting              `xml:"reporting,omitempty"`
}

type Project

type Project struct {
	XMLName                *xml.Name               `xml:"project,omitempty"`
	ModelVersion           *string                 `xml:"modelVersion,omitempty"`
	Parent                 *Parent                 `xml:"parent,omitempty"`
	GroupID                *string                 `xml:"groupId,omitempty"`
	ArtifactID             *string                 `xml:"artifactId,omitempty"`
	Version                *string                 `xml:"version,omitempty"`
	Packaging              *string                 `xml:"packaging,omitempty"`
	Name                   *string                 `xml:"name,omitempty"`
	Description            *string                 `xml:"description,omitempty"`
	URL                    *string                 `xml:"url,omitempty"`
	InceptionYear          *string                 `xml:"inceptionYear,omitempty"`
	Organization           *Organization           `xml:"organization,omitempty"`
	Licenses               *[]License              `xml:"licenses>license,omitempty"`
	Developers             *[]Developer            `xml:"developers>developer,omitempty"`
	Contributors           *[]Contributor          `xml:"contributors>contributor,omitempty"`
	MailingLists           *[]MailingList          `xml:"mailingLists>mailingList,omitempty"`
	Prerequisites          *Prerequisites          `xml:"prerequisites,omitempty"`
	Modules                *[]string               `xml:"modules>module,omitempty"`
	SCM                    *Scm                    `xml:"scm,omitempty"`
	IssueManagement        *IssueManagement        `xml:"issueManagement,omitempty"`
	CIManagement           *CIManagement           `xml:"ciManagement,omitempty"`
	DistributionManagement *DistributionManagement `xml:"distributionManagement,omitempty"`
	DependencyManagement   *DependencyManagement   `xml:"dependencyManagement,omitempty"`
	Dependencies           *[]Dependency           `xml:"dependencies>dependency,omitempty"`
	Repositories           *[]Repository           `xml:"repositories>repository,omitempty"`
	PluginRepositories     *[]PluginRepository     `xml:"pluginRepositories>pluginRepository,omitempty"`
	Build                  *Build                  `xml:"build,omitempty"`
	Reporting              *Reporting              `xml:"reporting,omitempty"`
	Profiles               *[]Profile              `xml:"profiles>profile,omitempty"`
	Properties             *Properties             `xml:"properties,omitempty"`
}

func Parse

func Parse(path string) (*Project, error)

func ParseFromReader

func ParseFromReader(reader io.Reader) (*Project, error)

type Properties

type Properties struct {
	Entries map[string]string
}

func (Properties) MarshalXML

func (p Properties) MarshalXML(e *xml.Encoder, start xml.StartElement) error

MarshalXML marshals Properties into XML.

func (*Properties) UnmarshalXML

func (p *Properties) UnmarshalXML(d *xml.Decoder, start xml.StartElement) (err error)

type Relocation

type Relocation struct {
	GroupID    *string `xml:"groupId,omitempty"`
	ArtifactID *string `xml:"artifactId,omitempty"`
	Version    *string `xml:"version,omitempty"`
	Message    *string `xml:"message,omitempty"`
}

type ReportSet

type ReportSet struct {
	ID            *string     `xml:"id,omitempty"`
	Reports       *[]string   `xml:"reports>report,omitempty"`
	Inherited     *string     `xml:"inherited,omitempty"`
	Configuration *Properties `xml:"configuration,omitempty"`
}

type Reporting

type Reporting struct {
	ExcludeDefaults *string            `xml:"excludeDefaults,omitempty"`
	OutputDirectory *string            `xml:"outputDirectory,omitempty"`
	Plugins         *[]ReportingPlugin `xml:"plugins>plugin,omitempty"`
}

type ReportingPlugin

type ReportingPlugin struct {
	GroupID       *string      `xml:"groupId,omitempty"`
	ArtifactID    *string      `xml:"artifactId,omitempty"`
	Version       *string      `xml:"version,omitempty"`
	Inherited     *string      `xml:"inherited,omitempty"`
	ReportSets    *[]ReportSet `xml:"reportSets>reportSet,omitempty"`
	Configuration *Properties  `xml:"configuration,omitempty"`
}

type Repository

type Repository struct {
	UniqueVersion *bool             `xml:"uniqueVersion,omitempty"`
	Releases      *RepositoryPolicy `xml:"releases,omitempty"`
	Snapshots     *RepositoryPolicy `xml:"snapshots,omitempty"`
	ID            *string           `xml:"id,omitempty"`
	Name          *string           `xml:"name,omitempty"`
	URL           *string           `xml:"url,omitempty"`
	Layout        *string           `xml:"layout,omitempty"`
}

type RepositoryPolicy

type RepositoryPolicy struct {
	Enabled        *string `xml:"enabled,omitempty"`
	UpdatePolicy   *string `xml:"updatePolicy,omitempty"`
	ChecksumPolicy *string `xml:"checksumPolicy,omitempty"`
}

type Resource

type Resource struct {
	TargetPath *string   `xml:"targetPath,omitempty"`
	Filtering  *string   `xml:"filtering,omitempty"`
	Directory  *string   `xml:"directory,omitempty"`
	Includes   *[]string `xml:"includes>include,omitempty"`
	Excludes   *[]string `xml:"excludes>exclude,omitempty"`
}

type Scm

type Scm struct {
	Connection          *string `xml:"connection,omitempty"`
	DeveloperConnection *string `xml:"developerConnection,omitempty"`
	Tag                 *string `xml:"tag,omitempty"`
	URL                 *string `xml:"url,omitempty"`
}

type Site

type Site struct {
	ID   *string `xml:"id,omitempty"`
	Name *string `xml:"name,omitempty"`
	URL  *string `xml:"url,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL