gopom

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Aug 8, 2023 License: MIT Imports: 4 Imported by: 19

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.

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

Installation

go get -u github.com/vifraa/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/vifraa/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/vifraa/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

Copyright (c) 2020-present Viktor Franzén

Licensed under MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Activation added in v0.1.0

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 added in v0.1.0

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

type ActivationOS added in v0.1.0

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 added in v0.1.0

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 added in v0.1.0

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 added in v0.0.2

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 added in v0.1.0

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 added in v0.2.0

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

type Properties added in v0.1.0

type Properties struct {
	Entries map[string]string
}

func (Properties) MarshalXML added in v0.2.1

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

MarshalXML marshals Properties into XML.

func (*Properties) UnmarshalXML added in v0.1.0

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

type Relocation added in v0.0.2

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 added in v0.0.2

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 added in v0.0.2

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 added in v0.0.2

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