[ 
https://issues.apache.org/jira/browse/MEAR-216?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17195895#comment-17195895
 ] 

Marat Abrarov edited comment on MEAR-216 at 9/15/20, 6:13 AM:
--------------------------------------------------------------

[~wrungel], what about custom artifact type mappings - 
[artifactTypeMappings|https://maven.apache.org/plugins/maven-ear-plugin/generate-application-xml-mojo.html#artifactTypeMappings]
 configuration parameter of ear:generate-application-xml and ear:ear goals?

I tried this configuration (upgraded till the latest GA version of Maven EAR 
Plugin and added artifactTypeMappings option):
{code:xml}
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <version>7</version>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        <useBaseVersion>true</useBaseVersion>
        <artifactTypeMappings>
            <artifactTypeMapping type="test-jar" mapping="jar"/>
        </artifactTypeMappings>
    </configuration>
</plugin>
{code}
for [^test-jar-in-ear-2.zip] maven project you provided and it works:
{noformat}
$ mvn clean package
...
[INFO] ----------------------< frol:test-jar-in-ear-ear >----------------------
[INFO] Building test-jar-in-ear-ear 1.0-SNAPSHOT                          [3/3]
[INFO] --------------------------------[ ear ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ test-jar-in-ear-ear 
---
[INFO] 
[INFO] --- maven-ear-plugin:3.0.2:generate-application-xml 
(default-generate-application-xml) @ test-jar-in-ear-ear ---
[WARNING] Using useBaseVersion not yet fixed.
[INFO] Generating application.xml
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
test-jar-in-ear-ear ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, 
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory 
D:\Users\Marat\Documents\work\java\test-jar-in-ear\ear\src\main\resources
[INFO] 
[INFO] --- maven-ear-plugin:3.0.2:ear (default-ear) @ test-jar-in-ear-ear ---
[WARNING] Using useBaseVersion not yet fixed.
[INFO] Copying artifact [jar:frol:test-jar-in-ear-lib:1.0-SNAPSHOT] to 
[lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT.jar]
[INFO] Copying artifact [jar:frol:test-jar-in-ear-lib:tests:1.0-SNAPSHOT] to 
[lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT-tests.jar]
[INFO] Copy ear sources to 
D:\Users\Marat\Documents\work\java\test-jar-in-ear\ear\target\test-jar-in-ear-ear-1.0-SNAPSHOT
[INFO] Building jar: 
D:\Users\Marat\Documents\work\java\test-jar-in-ear\ear\target\test-jar-in-ear-ear-1.0-SNAPSHOT.ear
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for test-jar-in-ear-parent 1.0-SNAPSHOT:
[INFO] 
[INFO] test-jar-in-ear-parent ............................. SUCCESS [  0.194 s]
[INFO] test-jar-in-ear-lib ................................ SUCCESS [  2.390 s]
[INFO] test-jar-in-ear-ear ................................ SUCCESS [  0.892 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.655 s (Wall Clock)
[INFO] Finished at: 2020-09-15T08:56:36+03:00
[INFO] ------------------------------------------------------------------------

$ cat ear/target/application.xml
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"; version="7">
  <display-name>test-jar-in-ear-ear</display-name>
  <library-directory>lib</library-directory>
</application>

$ unzip -l ear/target/test-jar-in-ear-ear-1.0-SNAPSHOT.ear
Archive:  ear/target/test-jar-in-ear-ear-1.0-SNAPSHOT.ear
  Length      Date    Time    Name
---------  ---------- -----   ----
       95  09-15-2020 09:04   META-INF/MANIFEST.MF
        0  09-15-2020 09:04   META-INF/
        0  09-15-2020 09:04   lib/
        0  09-15-2020 09:04   META-INF/maven/
        0  09-15-2020 09:04   META-INF/maven/frol/
        0  09-15-2020 09:04   META-INF/maven/frol/test-jar-in-ear-ear/
     2076  09-15-2020 09:04   
lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT-tests.jar
      381  09-15-2020 09:04   META-INF/application.xml
     1684  09-15-2020 08:56   META-INF/maven/frol/test-jar-in-ear-ear/pom.xml
       96  09-15-2020 09:04   
META-INF/maven/frol/test-jar-in-ear-ear/pom.properties
     2082  09-15-2020 09:04   lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT.jar
---------                     -------
     6414                     11 files
{noformat}
Refer to 
[{{org.apache.maven.plugins.ear.util.ArtifactTypeMappingService}}|https://github.com/apache/maven-ear-plugin/blob/maven-ear-plugin-3.0.2/src/main/java/org/apache/maven/plugins/ear/util/ArtifactTypeMappingService.java]
 class and to 
[{{org.apache.maven.plugins.ear.util.ArtifactRepository#getArtifacts}}|https://github.com/apache/maven-ear-plugin/blob/maven-ear-plugin-3.0.2/src/main/java/org/apache/maven/plugins/ear/util/ArtifactRepository.java#L138]
 method which is called by 
[{{org.apache.maven.plugins.ear.JarModule#resolveArtifact}}|https://github.com/apache/maven-ear-plugin/blob/maven-ear-plugin-3.0.2/src/main/java/org/apache/maven/plugins/ear/JarModule.java#L91]
 method when generating application.xml and packaging EAR file.


was (Author: abrarovm):
[~wrungel], what about custom artifact type mappings - 
[artifactTypeMappings|https://maven.apache.org/plugins/maven-ear-plugin/generate-application-xml-mojo.html#artifactTypeMappings]
 configuration parameter of ear:generate-application-xml and ear:ear goals?

I tried this configuration (upgraded till the latest GA version of Maven EAR 
Plugin and added artifactTypeMappings option):
{code:xml}
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-ear-plugin</artifactId>
    <version>3.0.2</version>
    <configuration>
        <version>7</version>
        <defaultLibBundleDir>lib</defaultLibBundleDir>
        <useBaseVersion>true</useBaseVersion>
        <artifactTypeMappings>
            <artifactTypeMapping type="test-jar" mapping="jar"/>
        </artifactTypeMappings>
    </configuration>
</plugin>
{code}
for [^test-jar-in-ear-2.zip] maven project you provided and it works:
{noformat}
$ mvn clean package
...
[INFO] ----------------------< frol:test-jar-in-ear-ear >----------------------
[INFO] Building test-jar-in-ear-ear 1.0-SNAPSHOT                          [3/3]
[INFO] --------------------------------[ ear ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ test-jar-in-ear-ear 
---
[INFO] 
[INFO] --- maven-ear-plugin:3.0.2:generate-application-xml 
(default-generate-application-xml) @ test-jar-in-ear-ear ---
[WARNING] Using useBaseVersion not yet fixed.
[INFO] Generating application.xml
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ 
test-jar-in-ear-ear ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, 
i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory 
D:\Users\Marat\Documents\work\java\test-jar-in-ear\ear\src\main\resources
[INFO] 
[INFO] --- maven-ear-plugin:3.0.2:ear (default-ear) @ test-jar-in-ear-ear ---
[WARNING] Using useBaseVersion not yet fixed.
[INFO] Copying artifact [jar:frol:test-jar-in-ear-lib:1.0-SNAPSHOT] to 
[lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT.jar]
[INFO] Copying artifact [jar:frol:test-jar-in-ear-lib:tests:1.0-SNAPSHOT] to 
[lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT-tests.jar]
[INFO] Copy ear sources to 
D:\Users\Marat\Documents\work\java\test-jar-in-ear\ear\target\test-jar-in-ear-ear-1.0-SNAPSHOT
[INFO] Building jar: 
D:\Users\Marat\Documents\work\java\test-jar-in-ear\ear\target\test-jar-in-ear-ear-1.0-SNAPSHOT.ear
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for test-jar-in-ear-parent 1.0-SNAPSHOT:
[INFO] 
[INFO] test-jar-in-ear-parent ............................. SUCCESS [  0.194 s]
[INFO] test-jar-in-ear-lib ................................ SUCCESS [  2.390 s]
[INFO] test-jar-in-ear-ear ................................ SUCCESS [  0.892 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.655 s (Wall Clock)
[INFO] Finished at: 2020-09-15T08:56:36+03:00
[INFO] ------------------------------------------------------------------------

$ cat ear/target/application.xml
<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://xmlns.jcp.org/xml/ns/javaee"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
http://xmlns.jcp.org/xml/ns/javaee/application_7.xsd"; version="7">
  <display-name>test-jar-in-ear-ear</display-name>
  <library-directory>lib</library-directory>

$ unzip -l ear/target/test-jar-in-ear-ear-1.0-SNAPSHOT.ear
Archive:  ear/target/test-jar-in-ear-ear-1.0-SNAPSHOT.ear
  Length      Date    Time    Name
---------  ---------- -----   ----
       95  09-15-2020 09:04   META-INF/MANIFEST.MF
        0  09-15-2020 09:04   META-INF/
        0  09-15-2020 09:04   lib/
        0  09-15-2020 09:04   META-INF/maven/
        0  09-15-2020 09:04   META-INF/maven/frol/
        0  09-15-2020 09:04   META-INF/maven/frol/test-jar-in-ear-ear/
     2076  09-15-2020 09:04   
lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT-tests.jar
      381  09-15-2020 09:04   META-INF/application.xml
     1684  09-15-2020 08:56   META-INF/maven/frol/test-jar-in-ear-ear/pom.xml
       96  09-15-2020 09:04   
META-INF/maven/frol/test-jar-in-ear-ear/pom.properties
     2082  09-15-2020 09:04   lib/frol-test-jar-in-ear-lib-1.0-SNAPSHOT.jar
---------                     -------
     6414                     11 files
{noformat}
Refer to 
[{{org.apache.maven.plugins.ear.util.ArtifactTypeMappingService}}|https://github.com/apache/maven-ear-plugin/blob/maven-ear-plugin-3.0.2/src/main/java/org/apache/maven/plugins/ear/util/ArtifactTypeMappingService.java]
 class and to 
[{{org.apache.maven.plugins.ear.util.ArtifactRepository#getArtifacts}}|https://github.com/apache/maven-ear-plugin/blob/maven-ear-plugin-3.0.2/src/main/java/org/apache/maven/plugins/ear/util/ArtifactRepository.java#L138]
 method which is called by 
[{{org.apache.maven.plugins.ear.JarModule#resolveArtifact}}|https://github.com/apache/maven-ear-plugin/blob/maven-ear-plugin-3.0.2/src/main/java/org/apache/maven/plugins/ear/JarModule.java#L91]
 method when generating application.xml and packaging EAR file.

> Unable to include dependencies of type test-jar
> -----------------------------------------------
>
>                 Key: MEAR-216
>                 URL: https://issues.apache.org/jira/browse/MEAR-216
>             Project: Maven Ear Plugin
>          Issue Type: Improvement
>    Affects Versions: 2.10
>            Reporter: Maxim Frolov
>            Priority: Major
>             Fix For: 3.1.0
>
>         Attachments: test-jar-in-ear-2.zip, test-jar-in-ear.zip
>
>
> Please implement support for artifacts of type *test-jar*.
> One of the use cases would be to build a test EAR as a mix of production and 
> test JARs where the test JARs are used to set up the test data used to test 
> the production code.
> Currently including one or more dependencies of type test-jar causes 
> *LifecycleExecutionException*: 
> {noformat}
> [ERROR] Failed to execute goal 
> org.apache.maven.plugins:maven-ear-plugin:2.10:generate-application-xml 
> (default-generate-application-xml) on project suite-systemtests-common-ear: 
> Failed to initialize ear modules: Unknown artifact type[test-jar] for 
> artifact_id -> [Help 1]
> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute 
> goal org.apache.maven.plugins:maven-ear-plugin:2.10:generate-application-xml 
> (default-generate-application-xml) on project suite-systemtests-common-ear: 
> Failed to initialize ear modules
>         at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
>         at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
>         at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
>         at 
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
>         at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
>         at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
>         at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
>         at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
>         at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:606)
>         at 
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
>         at 
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
>         at 
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
>         at 
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
> Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to 
> initialize ear modules
>         at 
> org.apache.maven.plugin.ear.AbstractEarMojo.execute(AbstractEarMojo.java:260)
>         at 
> org.apache.maven.plugin.ear.GenerateApplicationXmlMojo.execute(GenerateApplicationXmlMojo.java:162)
>         at 
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
>         at 
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
>         ... 19 more
> Caused by: org.apache.maven.plugin.ear.UnknownArtifactTypeException: Unknown 
> artifact type[test-jar] for common-domain-impl
>         at 
> org.apache.maven.plugin.ear.EarModuleFactory.newEarModule(EarModuleFactory.java:88)
>         at 
> org.apache.maven.plugin.ear.AbstractEarMojo.execute(AbstractEarMojo.java:250)
>         ... 22 more
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to