View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.plugins.ear;
20  
21  import java.util.Set;
22  
23  import org.apache.maven.artifact.Artifact;
24  import org.apache.maven.plugin.MojoFailureException;
25  import org.codehaus.plexus.util.xml.XMLWriter;
26  
27  /**
28   * The ear module interface.
29   *
30   * @author <a href="snicoll@apache.org">Stephane Nicoll</a>
31   */
32  public interface EarModule {
33  
34      /**
35       * Returns the {@link Artifact} representing this module.
36       *
37       * Note that this might return {@code null} till the module has been resolved.
38       *
39       * @return the artifact
40       * @see #resolveArtifact(java.util.Set)
41       */
42      Artifact getArtifact();
43  
44      /**
45       * Returns the {@code URI} for this module.
46       *
47       * @return the {@code URI}
48       */
49      String getUri();
50  
51      /**
52       * Returns the type associated to the module.
53       *
54       * @return the artifact's type of the module
55       */
56      String getType();
57  
58      /**
59       * Specify whether this module should be excluded or not.
60       *
61       * @return true if this module should be skipped, false otherwise
62       */
63      boolean isExcluded();
64  
65      /**
66       * Specify whether this module should be unpacked in the EAR archive or not.
67       *
68       * Returns null if no configuration was specified so that defaulting may apply.
69       *
70       * @return true if this module should be bundled unpacked, false otherwise
71       */
72      Boolean shouldUnpack();
73  
74      /**
75       * The alt-dd element specifies an optional URI to the post-assembly version of the deployment descriptor file for a
76       * particular Java EE module. The URI must specify the full pathname of the deployment descriptor file relative to
77       * the application's root directory.
78       *
79       * @return the alternative deployment descriptor for this module
80       * @since JavaEE 5
81       */
82      String getAltDeploymentDescriptor();
83  
84      /**
85       * Appends the {@code XML} representation of this module.
86       *
87       * @param writer the writer to use
88       * @param version the version of the {@code application.xml} file
89       * @param generateId whether an id should be generated
90       */
91      void appendModule(XMLWriter writer, String version, Boolean generateId);
92  
93      /**
94       * Resolves the {@link Artifact} represented by the module. Note that the {@link EarExecutionContext} might be used
95       * to customize further the resolution.
96       *
97       * @param artifacts the project's artifacts
98       * @throws EarPluginException if the artifact could not be resolved
99       * @throws MojoFailureException if an unexpected error occurred
100      */
101     void resolveArtifact(Set<Artifact> artifacts) throws EarPluginException, MojoFailureException;
102 
103     /**
104      * @param earExecutionContext The execution context.
105      */
106     void setEarExecutionContext(EarExecutionContext earExecutionContext);
107 
108     /**
109      * @return the state if manifest classpath will be changed or not.
110      */
111     boolean changeManifestClasspath();
112 
113     /**
114      * @return The directory of the module which contains the JAR libraries packaged within the module.
115      * Can be {@code null}, which means that module doesn't contain any packaged libraries.
116      */
117     String getLibDir();
118 
119     /**
120      * Returns the bundle file name. If {@code null}, the artifact's file name is returned.
121      *
122      * @return the bundle file name
123      */
124     String getBundleFileName();
125 
126     /**
127      * If module should be included into the Class-Path entry of MANIFEST.mf. Doesn't impact Class-Path entry of
128      * MANIFEST.mf of modules which contain all of their dependencies unless skinnyWars / skinnyModules is turned on.
129      *
130      * @return {@code }True} if module should be included into the Class-Path entry of MANIFEST.mf
131      */
132     boolean isClassPathItem();
133 }