001// =================== DO NOT EDIT THIS FILE ====================
002// Generated by Modello 1.8.1,
003// any modifications will be overwritten.
004// ==============================================================
005
006package org.apache.maven.model;
007
008/**
009 * 
010 *         
011 *         The <code>&lt;project&gt;</code> element is the root of
012 * the descriptor.
013 *         The following table lists all of the possible child
014 * elements.
015 *         
016 *       
017 * 
018 * @version $Revision$ $Date$
019 */
020@SuppressWarnings( "all" )
021public class Model
022    extends ModelBase
023    implements java.io.Serializable, java.lang.Cloneable
024{
025
026      //--------------------------/
027     //- Class/Member Variables -/
028    //--------------------------/
029
030    /**
031     * Declares to which version of project descriptor this POM
032     * conforms.
033     */
034    private String modelVersion;
035
036    /**
037     * The location of the parent project, if one exists. Values
038     * from the parent
039     *             project will be the default for this project if
040     * they are left unspecified. The location
041     *             is given as a group ID, artifact ID and version.
042     */
043    private Parent parent;
044
045    /**
046     * 
047     *             
048     *             A universally unique identifier for a project.
049     * It is normal to
050     *             use a fully-qualified package name to
051     * distinguish it from other
052     *             projects with a similar name (eg.
053     * <code>org.apache.maven</code>).
054     *             
055     *           
056     */
057    private String groupId;
058
059    /**
060     * The identifier for this artifact that is unique within the
061     * group given by the
062     *             group ID. An artifact is something that is
063     * either produced or used by a project.
064     *             Examples of artifacts produced by Maven for a
065     * project include: JARs, source and binary
066     *             distributions, and WARs.
067     */
068    private String artifactId;
069
070    /**
071     * The current version of the artifact produced by this project.
072     */
073    private String version;
074
075    /**
076     * 
077     *             
078     *             The type of artifact this project produces, for
079     * example <code>jar</code>
080     *               <code>war</code>
081     *               <code>ear</code>
082     *               <code>pom</code>.
083     *             Plugins can create their own packaging, and
084     *             therefore their own packaging types,
085     *             so this list does not contain all possible
086     * types.
087     *             
088     *           
089     */
090    private String packaging = "jar";
091
092    /**
093     * The full name of the project.
094     */
095    private String name;
096
097    /**
098     * A detailed description of the project, used by Maven
099     * whenever it needs to
100     *             describe the project, such as on the web site.
101     * While this element can be specified as
102     *             CDATA to enable the use of HTML tags within the
103     * description, it is discouraged to allow
104     *             plain text representation. If you need to modify
105     * the index page of the generated web
106     *             site, you are able to specify your own instead
107     * of adjusting this text.
108     */
109    private String description;
110
111    /**
112     * 
113     *             
114     *             The URL to the project's homepage.
115     *             <br /><b>Default value is</b>: parent value [+
116     * path adjustment] + artifactId
117     *             
118     *           .
119     */
120    private String url;
121
122    /**
123     * The year of the project's inception, specified with 4
124     * digits. This value is
125     *             used when generating copyright notices as well
126     * as being informational.
127     */
128    private String inceptionYear;
129
130    /**
131     * This element describes various attributes of the
132     * organization to which the
133     *             project belongs. These attributes are utilized
134     * when documentation is created (for
135     *             copyright notices and links).
136     */
137    private Organization organization;
138
139    /**
140     * Field licenses.
141     */
142    private java.util.List<License> licenses;
143
144    /**
145     * Field developers.
146     */
147    private java.util.List<Developer> developers;
148
149    /**
150     * Field contributors.
151     */
152    private java.util.List<Contributor> contributors;
153
154    /**
155     * Field mailingLists.
156     */
157    private java.util.List<MailingList> mailingLists;
158
159    /**
160     * Describes the prerequisites in the build environment for
161     * this project.
162     */
163    private Prerequisites prerequisites;
164
165    /**
166     * Specification for the SCM used by the project, such as CVS,
167     * Subversion, etc.
168     */
169    private Scm scm;
170
171    /**
172     * The project's issue management system information.
173     */
174    private IssueManagement issueManagement;
175
176    /**
177     * The project's continuous integration information.
178     */
179    private CiManagement ciManagement;
180
181    /**
182     * Information required to build the project.
183     */
184    private Build build;
185
186    /**
187     * Field profiles.
188     */
189    private java.util.List<Profile> profiles;
190
191    /**
192     * Field modelEncoding.
193     */
194    private String modelEncoding = "UTF-8";
195
196
197      //-----------/
198     //- Methods -/
199    //-----------/
200
201    /**
202     * Method addContributor.
203     * 
204     * @param contributor
205     */
206    public void addContributor( Contributor contributor )
207    {
208        getContributors().add( contributor );
209    } //-- void addContributor( Contributor )
210
211    /**
212     * Method addDeveloper.
213     * 
214     * @param developer
215     */
216    public void addDeveloper( Developer developer )
217    {
218        getDevelopers().add( developer );
219    } //-- void addDeveloper( Developer )
220
221    /**
222     * Method addLicense.
223     * 
224     * @param license
225     */
226    public void addLicense( License license )
227    {
228        getLicenses().add( license );
229    } //-- void addLicense( License )
230
231    /**
232     * Method addMailingList.
233     * 
234     * @param mailingList
235     */
236    public void addMailingList( MailingList mailingList )
237    {
238        getMailingLists().add( mailingList );
239    } //-- void addMailingList( MailingList )
240
241    /**
242     * Method addProfile.
243     * 
244     * @param profile
245     */
246    public void addProfile( Profile profile )
247    {
248        getProfiles().add( profile );
249    } //-- void addProfile( Profile )
250
251    /**
252     * Method clone.
253     * 
254     * @return Model
255     */
256    public Model clone()
257    {
258        try
259        {
260            Model copy = (Model) super.clone();
261
262            if ( this.parent != null )
263            {
264                copy.parent = (Parent) this.parent.clone();
265            }
266
267            if ( this.organization != null )
268            {
269                copy.organization = (Organization) this.organization.clone();
270            }
271
272            if ( this.licenses != null )
273            {
274                copy.licenses = new java.util.ArrayList<License>();
275                for ( License item : this.licenses )
276                {
277                    copy.licenses.add( ( (License) item).clone() );
278                }
279            }
280
281            if ( this.developers != null )
282            {
283                copy.developers = new java.util.ArrayList<Developer>();
284                for ( Developer item : this.developers )
285                {
286                    copy.developers.add( ( (Developer) item).clone() );
287                }
288            }
289
290            if ( this.contributors != null )
291            {
292                copy.contributors = new java.util.ArrayList<Contributor>();
293                for ( Contributor item : this.contributors )
294                {
295                    copy.contributors.add( ( (Contributor) item).clone() );
296                }
297            }
298
299            if ( this.mailingLists != null )
300            {
301                copy.mailingLists = new java.util.ArrayList<MailingList>();
302                for ( MailingList item : this.mailingLists )
303                {
304                    copy.mailingLists.add( ( (MailingList) item).clone() );
305                }
306            }
307
308            if ( this.prerequisites != null )
309            {
310                copy.prerequisites = (Prerequisites) this.prerequisites.clone();
311            }
312
313            if ( this.scm != null )
314            {
315                copy.scm = (Scm) this.scm.clone();
316            }
317
318            if ( this.issueManagement != null )
319            {
320                copy.issueManagement = (IssueManagement) this.issueManagement.clone();
321            }
322
323            if ( this.ciManagement != null )
324            {
325                copy.ciManagement = (CiManagement) this.ciManagement.clone();
326            }
327
328            if ( this.build != null )
329            {
330                copy.build = (Build) this.build.clone();
331            }
332
333            if ( this.profiles != null )
334            {
335                copy.profiles = new java.util.ArrayList<Profile>();
336                for ( Profile item : this.profiles )
337                {
338                    copy.profiles.add( ( (Profile) item).clone() );
339                }
340            }
341
342            cloneHook( copy );
343
344            return copy;
345        }
346        catch ( java.lang.Exception ex )
347        {
348            throw (java.lang.RuntimeException) new java.lang.UnsupportedOperationException( getClass().getName()
349                + " does not support clone()" ).initCause( ex );
350        }
351    } //-- Model clone()
352
353    /**
354     * Get the identifier for this artifact that is unique within
355     * the group given by the
356     *             group ID. An artifact is something that is
357     * either produced or used by a project.
358     *             Examples of artifacts produced by Maven for a
359     * project include: JARs, source and binary
360     *             distributions, and WARs.
361     * 
362     * @return String
363     */
364    public String getArtifactId()
365    {
366        return this.artifactId;
367    } //-- String getArtifactId()
368
369    /**
370     * Get information required to build the project.
371     * 
372     * @return Build
373     */
374    public Build getBuild()
375    {
376        return this.build;
377    } //-- Build getBuild()
378
379    /**
380     * Get the project's continuous integration information.
381     * 
382     * @return CiManagement
383     */
384    public CiManagement getCiManagement()
385    {
386        return this.ciManagement;
387    } //-- CiManagement getCiManagement()
388
389    /**
390     * Method getContributors.
391     * 
392     * @return List
393     */
394    public java.util.List<Contributor> getContributors()
395    {
396        if ( this.contributors == null )
397        {
398            this.contributors = new java.util.ArrayList<Contributor>();
399        }
400
401        return this.contributors;
402    } //-- java.util.List<Contributor> getContributors()
403
404    /**
405     * Get a detailed description of the project, used by Maven
406     * whenever it needs to
407     *             describe the project, such as on the web site.
408     * While this element can be specified as
409     *             CDATA to enable the use of HTML tags within the
410     * description, it is discouraged to allow
411     *             plain text representation. If you need to modify
412     * the index page of the generated web
413     *             site, you are able to specify your own instead
414     * of adjusting this text.
415     * 
416     * @return String
417     */
418    public String getDescription()
419    {
420        return this.description;
421    } //-- String getDescription()
422
423    /**
424     * Method getDevelopers.
425     * 
426     * @return List
427     */
428    public java.util.List<Developer> getDevelopers()
429    {
430        if ( this.developers == null )
431        {
432            this.developers = new java.util.ArrayList<Developer>();
433        }
434
435        return this.developers;
436    } //-- java.util.List<Developer> getDevelopers()
437
438    /**
439     * Get a universally unique identifier for a project. It is
440     * normal to
441     *             use a fully-qualified package name to
442     * distinguish it from other
443     *             projects with a similar name (eg.
444     * <code>org.apache.maven</code>).
445     * 
446     * @return String
447     */
448    public String getGroupId()
449    {
450        return this.groupId;
451    } //-- String getGroupId()
452
453    /**
454     * Get the year of the project's inception, specified with 4
455     * digits. This value is
456     *             used when generating copyright notices as well
457     * as being informational.
458     * 
459     * @return String
460     */
461    public String getInceptionYear()
462    {
463        return this.inceptionYear;
464    } //-- String getInceptionYear()
465
466    /**
467     * Get the project's issue management system information.
468     * 
469     * @return IssueManagement
470     */
471    public IssueManagement getIssueManagement()
472    {
473        return this.issueManagement;
474    } //-- IssueManagement getIssueManagement()
475
476    /**
477     * Method getLicenses.
478     * 
479     * @return List
480     */
481    public java.util.List<License> getLicenses()
482    {
483        if ( this.licenses == null )
484        {
485            this.licenses = new java.util.ArrayList<License>();
486        }
487
488        return this.licenses;
489    } //-- java.util.List<License> getLicenses()
490
491    /**
492     * Method getMailingLists.
493     * 
494     * @return List
495     */
496    public java.util.List<MailingList> getMailingLists()
497    {
498        if ( this.mailingLists == null )
499        {
500            this.mailingLists = new java.util.ArrayList<MailingList>();
501        }
502
503        return this.mailingLists;
504    } //-- java.util.List<MailingList> getMailingLists()
505
506    /**
507     * Get the modelEncoding field.
508     * 
509     * @return String
510     */
511    public String getModelEncoding()
512    {
513        return this.modelEncoding;
514    } //-- String getModelEncoding()
515
516    /**
517     * Get declares to which version of project descriptor this POM
518     * conforms.
519     * 
520     * @return String
521     */
522    public String getModelVersion()
523    {
524        return this.modelVersion;
525    } //-- String getModelVersion()
526
527    /**
528     * Get the full name of the project.
529     * 
530     * @return String
531     */
532    public String getName()
533    {
534        return this.name;
535    } //-- String getName()
536
537    /**
538     * Get this element describes various attributes of the
539     * organization to which the
540     *             project belongs. These attributes are utilized
541     * when documentation is created (for
542     *             copyright notices and links).
543     * 
544     * @return Organization
545     */
546    public Organization getOrganization()
547    {
548        return this.organization;
549    } //-- Organization getOrganization()
550
551    /**
552     * Get the type of artifact this project produces, for example
553     * <code>jar</code>
554     *               <code>war</code>
555     *               <code>ear</code>
556     *               <code>pom</code>.
557     *             Plugins can create their own packaging, and
558     *             therefore their own packaging types,
559     *             so this list does not contain all possible
560     * types.
561     * 
562     * @return String
563     */
564    public String getPackaging()
565    {
566        return this.packaging;
567    } //-- String getPackaging()
568
569    /**
570     * Get the location of the parent project, if one exists.
571     * Values from the parent
572     *             project will be the default for this project if
573     * they are left unspecified. The location
574     *             is given as a group ID, artifact ID and version.
575     * 
576     * @return Parent
577     */
578    public Parent getParent()
579    {
580        return this.parent;
581    } //-- Parent getParent()
582
583    /**
584     * Get describes the prerequisites in the build environment for
585     * this project.
586     * 
587     * @return Prerequisites
588     */
589    public Prerequisites getPrerequisites()
590    {
591        return this.prerequisites;
592    } //-- Prerequisites getPrerequisites()
593
594    /**
595     * Method getProfiles.
596     * 
597     * @return List
598     */
599    public java.util.List<Profile> getProfiles()
600    {
601        if ( this.profiles == null )
602        {
603            this.profiles = new java.util.ArrayList<Profile>();
604        }
605
606        return this.profiles;
607    } //-- java.util.List<Profile> getProfiles()
608
609    /**
610     * Get specification for the SCM used by the project, such as
611     * CVS, Subversion, etc.
612     * 
613     * @return Scm
614     */
615    public Scm getScm()
616    {
617        return this.scm;
618    } //-- Scm getScm()
619
620    /**
621     * Get the URL to the project's homepage.
622     *             <br /><b>Default value is</b>: parent value [+
623     * path adjustment] + artifactId.
624     * 
625     * @return String
626     */
627    public String getUrl()
628    {
629        return this.url;
630    } //-- String getUrl()
631
632    /**
633     * Get the current version of the artifact produced by this
634     * project.
635     * 
636     * @return String
637     */
638    public String getVersion()
639    {
640        return this.version;
641    } //-- String getVersion()
642
643    /**
644     * Method removeContributor.
645     * 
646     * @param contributor
647     */
648    public void removeContributor( Contributor contributor )
649    {
650        getContributors().remove( contributor );
651    } //-- void removeContributor( Contributor )
652
653    /**
654     * Method removeDeveloper.
655     * 
656     * @param developer
657     */
658    public void removeDeveloper( Developer developer )
659    {
660        getDevelopers().remove( developer );
661    } //-- void removeDeveloper( Developer )
662
663    /**
664     * Method removeLicense.
665     * 
666     * @param license
667     */
668    public void removeLicense( License license )
669    {
670        getLicenses().remove( license );
671    } //-- void removeLicense( License )
672
673    /**
674     * Method removeMailingList.
675     * 
676     * @param mailingList
677     */
678    public void removeMailingList( MailingList mailingList )
679    {
680        getMailingLists().remove( mailingList );
681    } //-- void removeMailingList( MailingList )
682
683    /**
684     * Method removeProfile.
685     * 
686     * @param profile
687     */
688    public void removeProfile( Profile profile )
689    {
690        getProfiles().remove( profile );
691    } //-- void removeProfile( Profile )
692
693    /**
694     * Set the identifier for this artifact that is unique within
695     * the group given by the
696     *             group ID. An artifact is something that is
697     * either produced or used by a project.
698     *             Examples of artifacts produced by Maven for a
699     * project include: JARs, source and binary
700     *             distributions, and WARs.
701     * 
702     * @param artifactId
703     */
704    public void setArtifactId( String artifactId )
705    {
706        this.artifactId = artifactId;
707    } //-- void setArtifactId( String )
708
709    /**
710     * Set information required to build the project.
711     * 
712     * @param build
713     */
714    public void setBuild( Build build )
715    {
716        this.build = build;
717    } //-- void setBuild( Build )
718
719    /**
720     * Set the project's continuous integration information.
721     * 
722     * @param ciManagement
723     */
724    public void setCiManagement( CiManagement ciManagement )
725    {
726        this.ciManagement = ciManagement;
727    } //-- void setCiManagement( CiManagement )
728
729    /**
730     * Set describes the contributors to a project that are not yet
731     * committers.
732     * 
733     * @param contributors
734     */
735    public void setContributors( java.util.List<Contributor> contributors )
736    {
737        this.contributors = contributors;
738    } //-- void setContributors( java.util.List )
739
740    /**
741     * Set a detailed description of the project, used by Maven
742     * whenever it needs to
743     *             describe the project, such as on the web site.
744     * While this element can be specified as
745     *             CDATA to enable the use of HTML tags within the
746     * description, it is discouraged to allow
747     *             plain text representation. If you need to modify
748     * the index page of the generated web
749     *             site, you are able to specify your own instead
750     * of adjusting this text.
751     * 
752     * @param description
753     */
754    public void setDescription( String description )
755    {
756        this.description = description;
757    } //-- void setDescription( String )
758
759    /**
760     * Set describes the committers of a project.
761     * 
762     * @param developers
763     */
764    public void setDevelopers( java.util.List<Developer> developers )
765    {
766        this.developers = developers;
767    } //-- void setDevelopers( java.util.List )
768
769    /**
770     * Set a universally unique identifier for a project. It is
771     * normal to
772     *             use a fully-qualified package name to
773     * distinguish it from other
774     *             projects with a similar name (eg.
775     * <code>org.apache.maven</code>).
776     * 
777     * @param groupId
778     */
779    public void setGroupId( String groupId )
780    {
781        this.groupId = groupId;
782    } //-- void setGroupId( String )
783
784    /**
785     * Set the year of the project's inception, specified with 4
786     * digits. This value is
787     *             used when generating copyright notices as well
788     * as being informational.
789     * 
790     * @param inceptionYear
791     */
792    public void setInceptionYear( String inceptionYear )
793    {
794        this.inceptionYear = inceptionYear;
795    } //-- void setInceptionYear( String )
796
797    /**
798     * Set the project's issue management system information.
799     * 
800     * @param issueManagement
801     */
802    public void setIssueManagement( IssueManagement issueManagement )
803    {
804        this.issueManagement = issueManagement;
805    } //-- void setIssueManagement( IssueManagement )
806
807    /**
808     * Set this element describes all of the licenses for this
809     * project.
810     *             Each license is described by a
811     * <code>license</code> element, which
812     *             is then described by additional elements.
813     *             Projects should only list the license(s) that
814     * applies to the project
815     *             and not the licenses that apply to dependencies.
816     *             If multiple licenses are listed, it is assumed
817     * that the user can select
818     *             any of them, not that they must accept all.
819     * 
820     * @param licenses
821     */
822    public void setLicenses( java.util.List<License> licenses )
823    {
824        this.licenses = licenses;
825    } //-- void setLicenses( java.util.List )
826
827    /**
828     * Set contains information about a project's mailing lists.
829     * 
830     * @param mailingLists
831     */
832    public void setMailingLists( java.util.List<MailingList> mailingLists )
833    {
834        this.mailingLists = mailingLists;
835    } //-- void setMailingLists( java.util.List )
836
837    /**
838     * Set the modelEncoding field.
839     * 
840     * @param modelEncoding
841     */
842    public void setModelEncoding( String modelEncoding )
843    {
844        this.modelEncoding = modelEncoding;
845    } //-- void setModelEncoding( String )
846
847    /**
848     * Set declares to which version of project descriptor this POM
849     * conforms.
850     * 
851     * @param modelVersion
852     */
853    public void setModelVersion( String modelVersion )
854    {
855        this.modelVersion = modelVersion;
856    } //-- void setModelVersion( String )
857
858    /**
859     * Set the full name of the project.
860     * 
861     * @param name
862     */
863    public void setName( String name )
864    {
865        this.name = name;
866    } //-- void setName( String )
867
868    /**
869     * Set this element describes various attributes of the
870     * organization to which the
871     *             project belongs. These attributes are utilized
872     * when documentation is created (for
873     *             copyright notices and links).
874     * 
875     * @param organization
876     */
877    public void setOrganization( Organization organization )
878    {
879        this.organization = organization;
880    } //-- void setOrganization( Organization )
881
882    /**
883     * Set the type of artifact this project produces, for example
884     * <code>jar</code>
885     *               <code>war</code>
886     *               <code>ear</code>
887     *               <code>pom</code>.
888     *             Plugins can create their own packaging, and
889     *             therefore their own packaging types,
890     *             so this list does not contain all possible
891     * types.
892     * 
893     * @param packaging
894     */
895    public void setPackaging( String packaging )
896    {
897        this.packaging = packaging;
898    } //-- void setPackaging( String )
899
900    /**
901     * Set the location of the parent project, if one exists.
902     * Values from the parent
903     *             project will be the default for this project if
904     * they are left unspecified. The location
905     *             is given as a group ID, artifact ID and version.
906     * 
907     * @param parent
908     */
909    public void setParent( Parent parent )
910    {
911        this.parent = parent;
912    } //-- void setParent( Parent )
913
914    /**
915     * Set describes the prerequisites in the build environment for
916     * this project.
917     * 
918     * @param prerequisites
919     */
920    public void setPrerequisites( Prerequisites prerequisites )
921    {
922        this.prerequisites = prerequisites;
923    } //-- void setPrerequisites( Prerequisites )
924
925    /**
926     * Set a listing of project-local build profiles which will
927     * modify the build process
928     *             when activated.
929     * 
930     * @param profiles
931     */
932    public void setProfiles( java.util.List<Profile> profiles )
933    {
934        this.profiles = profiles;
935    } //-- void setProfiles( java.util.List )
936
937    /**
938     * Set specification for the SCM used by the project, such as
939     * CVS, Subversion, etc.
940     * 
941     * @param scm
942     */
943    public void setScm( Scm scm )
944    {
945        this.scm = scm;
946    } //-- void setScm( Scm )
947
948    /**
949     * Set the URL to the project's homepage.
950     *             <br /><b>Default value is</b>: parent value [+
951     * path adjustment] + artifactId.
952     * 
953     * @param url
954     */
955    public void setUrl( String url )
956    {
957        this.url = url;
958    } //-- void setUrl( String )
959
960    /**
961     * Set the current version of the artifact produced by this
962     * project.
963     * 
964     * @param version
965     */
966    public void setVersion( String version )
967    {
968        this.version = version;
969    } //-- void setVersion( String )
970
971    
972            
973    private void cloneHook( Model copy )
974    {
975        copy.pomFile = pomFile;
976    }
977
978    /**
979     * The POM from which this model originated. This is transient runtime state and therefore not managed by Modello.
980     */
981    private java.io.File pomFile;
982
983    /**
984     * Gets the POM file for the corresponding project (if any).
985     *
986     * @return The POM file from which this model originated or {@code null} if this model does not belong to a local
987     *         project (e.g. describes the metadata of some artifact from the repository).
988     */
989    public java.io.File getPomFile()
990    {
991        return pomFile;
992    }
993
994    public void setPomFile( java.io.File pomFile )
995    {
996        this.pomFile = ( pomFile != null ) ? pomFile.getAbsoluteFile() : null;
997    }
998
999    /**
1000     * Gets the base directory for the corresponding project (if any).
1001     *
1002     * @return The base directory for the corresponding project or {@code null} if this model does not belong to a local
1003     *         project (e.g. describes the metadata of some artifact from the repository).
1004     */
1005    public java.io.File getProjectDirectory()
1006    {
1007        return ( pomFile != null ) ? pomFile.getParentFile() : null;
1008    }
1009
1010    /**
1011     * @return the model id as <code>groupId:artifactId:packaging:version</code>
1012     */
1013    public String getId()
1014    {
1015        StringBuilder id = new StringBuilder( 64 );
1016
1017        id.append( ( getGroupId() == null ) ? "[inherited]" : getGroupId() );
1018        id.append( ":" );
1019        id.append( getArtifactId() );
1020        id.append( ":" );
1021        id.append( getPackaging() );
1022        id.append( ":" );
1023        id.append( ( getVersion() == null ) ? "[inherited]" : getVersion() );
1024
1025        return id.toString();
1026    }
1027
1028    @Override
1029    public String toString()
1030    {
1031        return getId();
1032    }
1033            
1034          
1035}