[jira] (MEAR-167) Classes from different modules with the same artifactId are merged when skinnyWars set to TRUE

2013-11-16 Thread Anton Shaykin (JIRA)

[ 
https://jira.codehaus.org/browse/MEAR-167?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=335774#comment-335774
 ] 

Anton Shaykin commented on MEAR-167:


@Robert Scholte, You're welcome. Thanks for the fix! When could we expect the 
new release of maven-ear-plugin?

 Classes from different modules with the same artifactId are merged when 
 skinnyWars set to TRUE
 --

 Key: MEAR-167
 URL: https://jira.codehaus.org/browse/MEAR-167
 Project: Maven Ear Plugin
  Issue Type: Bug
Affects Versions: 2.8
Reporter: Anton Shaykin
Assignee: Robert Scholte
 Fix For: 2.9

 Attachments: example.zip


 When some modules, that are to be included in ear, have the same artifactId, 
 classes from those modules get merged.
 Consider this project structure
 {noformat}
 .
 |-root
 |-app
 |--business
 |---service
 |--ejb
 |---service
 {noformat}
 In this example, there are 2 ejb modules main.root.business:service:jar and 
 main.root.ejb:service:jar with artifactId 'service'.
 Project app has the following build configuration:
 {code:xml}
 build
   plugins
   plugin
   groupIdorg.apache.maven.plugins/groupId
   artifactIdmaven-ear-plugin/artifactId
   version2.8/version
   configuration
   skinnyWarstrue/skinnyWars
   modules
   ejbModule
   groupIdmain.root.ejb/groupId
   artifactIdservice/artifactId
   uriservice1.jar/uri
   /ejbModule
   ejbModule
   
 groupIdmain.root.business/groupId
   artifactIdservice/artifactId
   uriservice2.jar/uri
   /ejbModule
   /modules
   /configuration
   /plugin
   /plugins
 /build
 {code}
 When I run {{maven-ear-plugin:ear}} goal I get an ear with 2 ejb jars in it 
 (service1.jar and service2.jar), but the second one contains classes from 
 both modules.
 I did some code digging, and this is what I've found (EarMojo, line 684):
 {code}
 workDirectory =
 new File( new File( generatedDescriptorLocation, temp 
 ), module.getArtifact().getArtifactId() );
 workDirectory.mkdirs();
 {code}
 So, basically, when skinnyWars set to TRUE, you create a temporary folder 
 with the name based on artifactId. That's why the classes are merged in the 
 second jar.
 As a solution, I'd suggest either randomize the directory name, or at least 
 check for a directory existence and remove it recursively, if found.
 The example project is attached to this ticket.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


[jira] (MEAR-167) Classes from different modules with the same artifactId are merged when skinnyWars set to TRUE

2013-01-17 Thread Anton Shaykin (JIRA)
Anton Shaykin created MEAR-167:
--

 Summary: Classes from different modules with the same artifactId 
are merged when skinnyWars set to TRUE
 Key: MEAR-167
 URL: https://jira.codehaus.org/browse/MEAR-167
 Project: Maven 2.x Ear Plugin
  Issue Type: Bug
Affects Versions: 2.8
Reporter: Anton Shaykin
 Attachments: example.zip

When some modules, that are to be included in ear, have the same artifactId, 
classes from those modules get merged.

Consider this project structure

.
|-root
|-app
|--business
|---service
|--ejb
|---service

In this example, there are 2 ejb modules main.root.business:service:jar and 
main.root.ejb:service:jar with artifactId 'service'.

Project app has the following build configuration:

build
plugins
plugin
groupIdorg.apache.maven.plugins/groupId
artifactIdmaven-ear-plugin/artifactId
version2.8/version
configuration
skinnyWarstrue/skinnyWars
modules
ejbModule
groupIdmain.root.ejb/groupId
artifactIdservice/artifactId
uriservice1.jar/uri
/ejbModule
ejbModule

groupIdmain.root.business/groupId
artifactIdservice/artifactId
uriservice2.jar/uri
/ejbModule
/modules
/configuration
/plugin
/plugins
/build

When I run maven-ear-plugin:ear goal I get an ear with 2 ejb jars in it 
(service1.jar and service2.jar), but the second one contains classes from both 
modules.

I did some code digging, and this is what I've found (EarMojo, line 684):

workDirectory =
new File( new File( generatedDescriptorLocation, temp ), 
module.getArtifact().getArtifactId() );
workDirectory.mkdirs();

So, basically, when skinnyWars set to TRUE, you create a temporary folder with 
the name based on artifactId. That's why the classes are merged in the second 
jar.

As a solution, I'd suggest either randomize the directory name, or at least 
check for a directory existence and remove it recursively, if found.

The example project is attached to this ticket.
   

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira