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.api.plugin.testing;
20  
21  import java.lang.annotation.ElementType;
22  import java.lang.annotation.Inherited;
23  import java.lang.annotation.Retention;
24  import java.lang.annotation.RetentionPolicy;
25  import java.lang.annotation.Target;
26  
27  /**
28   * Container annotation for multiple {@link MojoParameter} annotations.
29   * This annotation is automatically used by Java when multiple {@code @MojoParameter}
30   * annotations are applied to the same element.
31   *
32   * <p>While this annotation can be used directly, it's generally more convenient
33   * to use multiple {@code @MojoParameter} annotations, which Java will automatically
34   * wrap in this container annotation.</p>
35   *
36   * <p>Example of direct usage:</p>
37   * <pre>
38   * {@code
39   * @Test
40   * @InjectMojo(goal = "compile")
41   * @MojoParameters({
42   *     @MojoParameter(name = "source", value = "1.8"),
43   *     @MojoParameter(name = "target", value = "1.8"),
44   *     @MojoParameter(name = "debug", value = "true")
45   * })
46   * void testCompilation(CompileMojo mojo) {
47   *     mojo.execute();
48   * }
49   * }
50   * </pre>
51   *
52   * <p>Equivalent usage with repeatable annotation:</p>
53   * <pre>
54   * {@code
55   * @Test
56   * @InjectMojo(goal = "compile")
57   * @MojoParameter(name = "source", value = "1.8")
58   * @MojoParameter(name = "target", value = "1.8")
59   * @MojoParameter(name = "debug", value = "true")
60   * void testCompilation(CompileMojo mojo) {
61   *     mojo.execute();
62   * }
63   * }
64   * </pre>
65   *
66   * @see MojoParameter
67   * @see InjectMojo
68   * @see MojoTest
69   * @since 3.4.0
70   */
71  @Retention(RetentionPolicy.RUNTIME)
72  @Inherited
73  @Target(ElementType.METHOD)
74  public @interface MojoParameters {
75      MojoParameter[] value();
76  }