AW: AW: AW: How to manage dependency "includes"?
Wasn't the option to add dependencies programatically by a plugin removed in 3.3.9? At least this is causing quite some problems with my FLexmojos plugin :-( Chris Von: Thomas Broyer Gesendet: Samstag, 9. Januar 2016 16:03 An: users@maven.apache.org; rwhee...@artifact-software.com Betreff: Re: AW: AW: How to manage dependency "includes"? IIUC, what you really want is a "replace with" rule. Couldn't that be done by a plugin? You could then configure it in the parent POM and have it executed everywhere. Le sam. 9 janv. 2016 10:59, Christofer Dutz a écrit : > Thanks for that detailed post, but it's still not what I asked for :-( > I just finished the transition of ALL of the projects of a large > international bank from Ant to Maven. In parallell > what was initially about 70 more or less separate projects, that were > assembled to one huge monolithic application was changed in order to create > modules and the ability to assemble several applications, each with > different focusses. > > It was a huge challenge as you have to coordinate the wishes of > uncountable project-managers, developers and other stakeholders. We > encountered quite a large number of serious problems. Everyone that has > worked for a Bank knows you can't just go there and tell them what the > standard is, cause they'll tell you what their standard is ;-) > > So in the end we prohibited (by maven plugin) providing the version of > third party libraries, enforced the usage of a company-wide > dependencyManagement pom that is used in every project. Additionally we > enforced the rules of the dependency plugin to declare used dependencies > and not to rely on transitive dependencies. With this a lot of our problems > were solved. Even if the developers complain every now and then, but I > guess that's the price to pay for giving them the freedom they need and the > flexibility they want. Introducing a rather strict policy on the process as > you describe, is completely out of the question. You can't get 40 project > managers to discuss new versions. This meeting would probably never, ever > end ;-) > > So back to the question none has answered yet (would be cool if maybe > someone on the dev-team of Maven could respond): > Would an "EXCLUSION"/"INCLUSION" mechanism in dependencyManagement break > things, and would it be ok to fix up a Pull request implementing that > functionality? > > Chris > > > Von: Ron Wheeler > Gesendet: Freitag, 8. Januar 2016 15:58 > An: users@maven.apache.org > Betreff: Re: AW: AW: How to manage dependency "includes"? > > In our setup, each project has its own parent POM and set of aggregated > third party libraries. Some sharing is done between products for really > common stuff like Spring, Apache Commons, Tomcat, etc. > The library com.artifact_software.projectA:reporting-library:1.2 might > be different from com.artifact_software.projectB:reporting-library:1.2 > if one used BIRT and the other used Jasper Reports. > > These should be under the control of the person/team that is responsible > for deciding what version of the third party libraries are to be allowed. > The following might be involved in the selection of a new library or a > request by a developer to upgrade a library. > - Product Manager - legal/licensing, market acceptance, documentation, > functionality issues > - Project manager - scheduling, testing, risk assessment, aggregation > strategy > - Lead developer - risk assessment, alternatives, technical analysis, > aggregation strategy > > At the beginning of each development sprint, we review the current > libraries to see what versions should be updated. > This does not completely eliminate changes to versions during the > development process as programmers run into opportunities to use > features from newer versions or discovery of critical bugs that require > a library upgrade in mid-sprint. > > This review is pretty short and usually involves the entire team so that > we can estimate the cost of changing a library - what modules will be > affected and require testing even if they are not being modified as part > of the sprint. > > Once this is done, the developers do not have to worry about > dependencies. Once the version of > com.artifact_software.projectA:commons-library:1.2 is set, the > developers do not have to worry about what version of each of the Apache > Commons libraries are included and module POMs should not include any > third party libraries unless there is a good reason not to have it under > team management. > > This also minimizes the changes to POMs. > The parent POM's dependency management sets the versions for the release > being developed so once the reference to the parent POM is changed, all > the right versions of everything is automatically included in the > module. This makes life really easy for developers - change one number > in the module POM and start working. > > I hope
AW: AW: AW: How to manage dependency "includes"?
But yes ... it's exactly what I want ... a "replace-with" option. But with exlucdes and includes I thought it should be possible to implement with the least impact on the rest of the Maven ecosystem. Chris Von: Thomas Broyer Gesendet: Samstag, 9. Januar 2016 16:03 An: users@maven.apache.org; rwhee...@artifact-software.com Betreff: Re: AW: AW: How to manage dependency "includes"? IIUC, what you really want is a "replace with" rule. Couldn't that be done by a plugin? You could then configure it in the parent POM and have it executed everywhere. Le sam. 9 janv. 2016 10:59, Christofer Dutz a écrit : > Thanks for that detailed post, but it's still not what I asked for :-( > I just finished the transition of ALL of the projects of a large > international bank from Ant to Maven. In parallell > what was initially about 70 more or less separate projects, that were > assembled to one huge monolithic application was changed in order to create > modules and the ability to assemble several applications, each with > different focusses. > > It was a huge challenge as you have to coordinate the wishes of > uncountable project-managers, developers and other stakeholders. We > encountered quite a large number of serious problems. Everyone that has > worked for a Bank knows you can't just go there and tell them what the > standard is, cause they'll tell you what their standard is ;-) > > So in the end we prohibited (by maven plugin) providing the version of > third party libraries, enforced the usage of a company-wide > dependencyManagement pom that is used in every project. Additionally we > enforced the rules of the dependency plugin to declare used dependencies > and not to rely on transitive dependencies. With this a lot of our problems > were solved. Even if the developers complain every now and then, but I > guess that's the price to pay for giving them the freedom they need and the > flexibility they want. Introducing a rather strict policy on the process as > you describe, is completely out of the question. You can't get 40 project > managers to discuss new versions. This meeting would probably never, ever > end ;-) > > So back to the question none has answered yet (would be cool if maybe > someone on the dev-team of Maven could respond): > Would an "EXCLUSION"/"INCLUSION" mechanism in dependencyManagement break > things, and would it be ok to fix up a Pull request implementing that > functionality? > > Chris > > > Von: Ron Wheeler > Gesendet: Freitag, 8. Januar 2016 15:58 > An: users@maven.apache.org > Betreff: Re: AW: AW: How to manage dependency "includes"? > > In our setup, each project has its own parent POM and set of aggregated > third party libraries. Some sharing is done between products for really > common stuff like Spring, Apache Commons, Tomcat, etc. > The library com.artifact_software.projectA:reporting-library:1.2 might > be different from com.artifact_software.projectB:reporting-library:1.2 > if one used BIRT and the other used Jasper Reports. > > These should be under the control of the person/team that is responsible > for deciding what version of the third party libraries are to be allowed. > The following might be involved in the selection of a new library or a > request by a developer to upgrade a library. > - Product Manager - legal/licensing, market acceptance, documentation, > functionality issues > - Project manager - scheduling, testing, risk assessment, aggregation > strategy > - Lead developer - risk assessment, alternatives, technical analysis, > aggregation strategy > > At the beginning of each development sprint, we review the current > libraries to see what versions should be updated. > This does not completely eliminate changes to versions during the > development process as programmers run into opportunities to use > features from newer versions or discovery of critical bugs that require > a library upgrade in mid-sprint. > > This review is pretty short and usually involves the entire team so that > we can estimate the cost of changing a library - what modules will be > affected and require testing even if they are not being modified as part > of the sprint. > > Once this is done, the developers do not have to worry about > dependencies. Once the version of > com.artifact_software.projectA:commons-library:1.2 is set, the > developers do not have to worry about what version of each of the Apache > Commons libraries are included and module POMs should not include any > third party libraries unless there is a good reason not to have it under > team management. > > This also minimizes the changes to POMs. > The parent POM's dependency management sets the versions for the release > being developed so once the reference to the parent POM is changed, all > the right versions of everything is automatically included in the > module. This makes life really easy for developers - change one number > in t
RuntimeInfo.init() not found
Hi, I am compiling a beta distribution of liferay7.0 and I have a problem with maven-ant-tasks.jar the method RuntimeInfo.init() does not exist in the jar but is required by the build process. The error I get when I build is this: BUILD FAILED /home/niko/lrdev/master/portal/build.xml:69: The following error occurred while executing this line: /home/niko/lrdev/master/portal/build.xml:329: The following error occurred while executing this line: /home/niko/lrdev/master/portal/build.xml:545: The following error occurred while executing this line: /home/niko/lrdev/master/portal/build-common.xml:900: java.lang.NoSuchMethodError: org.apache.maven.settings.RuntimeInfo.(Lorg/apache/maven/settings/Settings;)V at org.apache.maven.artifact.ant.AbstractArtifactTask.loadSettings(AbstractArtifactTask.java:328) at org.apache.maven.artifact.ant.AbstractArtifactTask.initSettings(AbstractArtifactTask.java:278) at org.apache.maven.artifact.ant.AbstractArtifactTask.getSettings(AbstractArtifactTask.java:223) at org.apache.maven.artifact.ant.AbstractArtifactTask.getDefaultLocalRepository(AbstractArtifactTask.java:212) at org.apache.maven.artifact.ant.AbstractArtifactTask.getLocalRepository(AbstractArtifactTask.java:700) at org.apache.maven.artifact.ant.AbstractArtifactTask.createLocalArtifactRepository(AbstractArtifactTask.java:110) at org.apache.maven.artifact.ant.Pom.getMavenProject(Pom.java:272) at org.apache.maven.artifact.ant.Pom.setVersion(Pom.java:570) ... There is also one error complaining about non-existent antlib.xml that is shown few lines above, but I think it manages to pass over it: log begins --- install-portal-snapshots: [antlib:org.apache.maven.artifact.ant] Could not load definitions from resource org/apache/maven/artifact/ant/antlib.xml. It could not be found. Class java.util.ArrayList loaded from parent loader (parentFirst) Class java.io.File loaded from parent loader (parentFirst) Finding class org.apache.maven.artifact.ant.AttachedArtifact Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/ant/AttachedArtifact.class Class org.apache.maven.artifact.ant.AttachedArtifact loaded from ant loader (parentFirst) Finding class org.apache.maven.artifact.Artifact Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/Artifact.class Class java.lang.Comparable loaded from parent loader (parentFirst) Class org.apache.maven.artifact.Artifact loaded from ant loader (parentFirst) Class org.apache.maven.model.Contributor loaded from parent loader (parentFirst) Class org.apache.maven.model.Dependency loaded from parent loader (parentFirst) Class org.apache.maven.model.DependencyManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.Developer loaded from parent loader (parentFirst) Class org.apache.maven.model.IssueManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.License loaded from parent loader (parentFirst) Class org.apache.maven.model.MailingList loaded from parent loader (parentFirst) Class org.apache.maven.model.Organization loaded from parent loader (parentFirst) Class org.apache.maven.model.Scm loaded from parent loader (parentFirst) Class org.apache.maven.model.DistributionManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.Model loaded from parent loader (parentFirst) Finding class org.apache.maven.artifact.ant.Profile Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/ant/Profile.class Class org.apache.maven.artifact.ant.Profile loaded from ant loader (parentFirst) Finding class org.apache.maven.project.MavenProjectBuilder Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/project/MavenProjectBuilder.class Class org.apache.maven.project.MavenProjectBuilder loaded from ant loader (parentFirst) Finding class org.apache.maven.project.MavenProject Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/project/MavenProject.class Class java.lang.Cloneable loaded from parent loader (parentFirst) Class org.apache.maven.project.MavenProject loaded from ant loader (parentFirst) Class org.apache.maven.model.Build loaded from parent loader (parentFirst) Class java.util.Properties loaded from parent loader (parentFirst) Class org.apache.maven.model.Parent loaded from parent loader (parentFirst) Class org.apache.maven.model.CiManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.Reporting loaded from parent loader (parentFirst) Finding class org.apache.maven.artifact.DependencyResolutionRequiredException Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/DependencyResolutionRe
Re: RuntimeInfo.init() not found
Hi, I assume you are building with Maven 3.2.X or newer ? Kind regards Karl Heinz Marbaise On 1/10/16 6:54 PM, Nulik Nol wrote: Hi, I am compiling a beta distribution of liferay7.0 and I have a problem with maven-ant-tasks.jar the method RuntimeInfo.init() does not exist in the jar but is required by the build process. The error I get when I build is this: BUILD FAILED /home/niko/lrdev/master/portal/build.xml:69: The following error occurred while executing this line: /home/niko/lrdev/master/portal/build.xml:329: The following error occurred while executing this line: /home/niko/lrdev/master/portal/build.xml:545: The following error occurred while executing this line: /home/niko/lrdev/master/portal/build-common.xml:900: java.lang.NoSuchMethodError: org.apache.maven.settings.RuntimeInfo.(Lorg/apache/maven/settings/Settings;)V at org.apache.maven.artifact.ant.AbstractArtifactTask.loadSettings(AbstractArtifactTask.java:328) at org.apache.maven.artifact.ant.AbstractArtifactTask.initSettings(AbstractArtifactTask.java:278) at org.apache.maven.artifact.ant.AbstractArtifactTask.getSettings(AbstractArtifactTask.java:223) at org.apache.maven.artifact.ant.AbstractArtifactTask.getDefaultLocalRepository(AbstractArtifactTask.java:212) at org.apache.maven.artifact.ant.AbstractArtifactTask.getLocalRepository(AbstractArtifactTask.java:700) at org.apache.maven.artifact.ant.AbstractArtifactTask.createLocalArtifactRepository(AbstractArtifactTask.java:110) at org.apache.maven.artifact.ant.Pom.getMavenProject(Pom.java:272) at org.apache.maven.artifact.ant.Pom.setVersion(Pom.java:570) ... There is also one error complaining about non-existent antlib.xml that is shown few lines above, but I think it manages to pass over it: log begins --- install-portal-snapshots: [antlib:org.apache.maven.artifact.ant] Could not load definitions from resource org/apache/maven/artifact/ant/antlib.xml. It could not be found. Class java.util.ArrayList loaded from parent loader (parentFirst) Class java.io.File loaded from parent loader (parentFirst) Finding class org.apache.maven.artifact.ant.AttachedArtifact Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/ant/AttachedArtifact.class Class org.apache.maven.artifact.ant.AttachedArtifact loaded from ant loader (parentFirst) Finding class org.apache.maven.artifact.Artifact Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/Artifact.class Class java.lang.Comparable loaded from parent loader (parentFirst) Class org.apache.maven.artifact.Artifact loaded from ant loader (parentFirst) Class org.apache.maven.model.Contributor loaded from parent loader (parentFirst) Class org.apache.maven.model.Dependency loaded from parent loader (parentFirst) Class org.apache.maven.model.DependencyManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.Developer loaded from parent loader (parentFirst) Class org.apache.maven.model.IssueManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.License loaded from parent loader (parentFirst) Class org.apache.maven.model.MailingList loaded from parent loader (parentFirst) Class org.apache.maven.model.Organization loaded from parent loader (parentFirst) Class org.apache.maven.model.Scm loaded from parent loader (parentFirst) Class org.apache.maven.model.DistributionManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.Model loaded from parent loader (parentFirst) Finding class org.apache.maven.artifact.ant.Profile Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/artifact/ant/Profile.class Class org.apache.maven.artifact.ant.Profile loaded from ant loader (parentFirst) Finding class org.apache.maven.project.MavenProjectBuilder Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/project/MavenProjectBuilder.class Class org.apache.maven.project.MavenProjectBuilder loaded from ant loader (parentFirst) Finding class org.apache.maven.project.MavenProject Loaded from /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar org/apache/maven/project/MavenProject.class Class java.lang.Cloneable loaded from parent loader (parentFirst) Class org.apache.maven.project.MavenProject loaded from ant loader (parentFirst) Class org.apache.maven.model.Build loaded from parent loader (parentFirst) Class java.util.Properties loaded from parent loader (parentFirst) Class org.apache.maven.model.Parent loaded from parent loader (parentFirst) Class org.apache.maven.model.CiManagement loaded from parent loader (parentFirst) Class org.apache.maven.model.Reporting loaded from parent loader (parentFirst) Finding class org.apache.maven.artifact.DependencyResolutionRequiredExce
Re: RuntimeInfo.init() not found
Yes. maven-3.3.3 to be exact. On Sun, Jan 10, 2016 at 12:04 PM, Karl Heinz Marbaise wrote: > Hi, > > I assume you are building with Maven 3.2.X or newer ? > > Kind regards > Karl Heinz Marbaise > > On 1/10/16 6:54 PM, Nulik Nol wrote: >> >> Hi, >> I am compiling a beta distribution of liferay7.0 and I have a problem >> with maven-ant-tasks.jar the method RuntimeInfo.init() does not exist >> in the jar but is required by the build process. >> >> The error I get when I build is this: >> BUILD FAILED >> /home/niko/lrdev/master/portal/build.xml:69: The following error >> occurred while executing this line: >> /home/niko/lrdev/master/portal/build.xml:329: The following error >> occurred while executing this line: >> /home/niko/lrdev/master/portal/build.xml:545: The following error >> occurred while executing this line: >> /home/niko/lrdev/master/portal/build-common.xml:900: >> java.lang.NoSuchMethodError: >> >> org.apache.maven.settings.RuntimeInfo.(Lorg/apache/maven/settings/Settings;)V >> at >> org.apache.maven.artifact.ant.AbstractArtifactTask.loadSettings(AbstractArtifactTask.java:328) >> at >> org.apache.maven.artifact.ant.AbstractArtifactTask.initSettings(AbstractArtifactTask.java:278) >> at >> org.apache.maven.artifact.ant.AbstractArtifactTask.getSettings(AbstractArtifactTask.java:223) >> at >> org.apache.maven.artifact.ant.AbstractArtifactTask.getDefaultLocalRepository(AbstractArtifactTask.java:212) >> at >> org.apache.maven.artifact.ant.AbstractArtifactTask.getLocalRepository(AbstractArtifactTask.java:700) >> at >> org.apache.maven.artifact.ant.AbstractArtifactTask.createLocalArtifactRepository(AbstractArtifactTask.java:110) >> at >> org.apache.maven.artifact.ant.Pom.getMavenProject(Pom.java:272) >> at org.apache.maven.artifact.ant.Pom.setVersion(Pom.java:570) >> ... >> >> There is also one error complaining about non-existent antlib.xml that >> is shown few lines above, but I think it manages to pass over it: >> log begins --- >> install-portal-snapshots: >> [antlib:org.apache.maven.artifact.ant] Could not load definitions from >> resource org/apache/maven/artifact/ant/antlib.xml. It could not be >> found. >> Class java.util.ArrayList loaded from parent loader (parentFirst) >> Class java.io.File loaded from parent loader (parentFirst) >> Finding class org.apache.maven.artifact.ant.AttachedArtifact >> Loaded from >> /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar >> org/apache/maven/artifact/ant/AttachedArtifact.class >> Class org.apache.maven.artifact.ant.AttachedArtifact loaded from ant >> loader (parentFirst) >> Finding class org.apache.maven.artifact.Artifact >> Loaded from >> /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar >> org/apache/maven/artifact/Artifact.class >> Class java.lang.Comparable loaded from parent loader (parentFirst) >> Class org.apache.maven.artifact.Artifact loaded from ant loader >> (parentFirst) >> Class org.apache.maven.model.Contributor loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.Dependency loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.DependencyManagement loaded from parent >> loader (parentFirst) >> Class org.apache.maven.model.Developer loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.IssueManagement loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.License loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.MailingList loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.Organization loaded from parent loader >> (parentFirst) >> Class org.apache.maven.model.Scm loaded from parent loader (parentFirst) >> Class org.apache.maven.model.DistributionManagement loaded from parent >> loader (parentFirst) >> Class org.apache.maven.model.Model loaded from parent loader (parentFirst) >> Finding class org.apache.maven.artifact.ant.Profile >> Loaded from >> /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar >> org/apache/maven/artifact/ant/Profile.class >> Class org.apache.maven.artifact.ant.Profile loaded from ant loader >> (parentFirst) >> Finding class org.apache.maven.project.MavenProjectBuilder >> Loaded from >> /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar >> org/apache/maven/project/MavenProjectBuilder.class >> Class org.apache.maven.project.MavenProjectBuilder loaded from ant >> loader (parentFirst) >> Finding class org.apache.maven.project.MavenProject >> Loaded from >> /home/niko/lrdev/master/portal/lib/development/maven-ant-tasks-2.1.3.jar >> org/apache/maven/project/MavenProject.class >> Class java.lang.Cloneable loaded from parent loader (parentFirst) >> Class org.apache.maven.project.MavenProject loaded from ant loader >> (parentFirst) >> Class org.apache.maven.model.Build loaded from parent loader (paren
[ANN] Apache Maven Shade Plugin 2.4.3 Released
Hi, The Apache Maven team is pleased to announce the release of the Apache Maven Shade Plugin, version 2.4.3 The release contains 4 bug fixes. Again we received contributions from the community in form of bug reports and bug fixes. Thank you and keep them coming! https://maven.apache.org/plugins/maven-shade-plugin/ You should specify the version in your project's plugin configuration: org.apache.maven.plugins maven-shade-plugin 2.4.3 Release Notes - Maven Shade Plugin - Version 2.4.3 Bug [MSHADE-171] - "Access Denied" on Windows because shade plugin seems to try to open a directory as Zip-File [MSHADE-195] - createSourcesJar with source:jar-no-fork causes sources.jar to be deployed twice, causing the build to fail Improvement [MSHADE-213] - Clarify contract of ResourceTransformer wrt closing of streams [MSHADE-214] - Update jdependency to 1.1 to fix resource leaks Enjoy, -The Apache Maven team
[ANN] Apache Maven Shade Plugin 2.4.3 Released
Hi, The Apache Maven team is pleased to announce the release of the Apache Maven Shade Plugin, version 2.4.3 The release contains 4 bug fixes. Again we received contributions from the community in form of bug reports and bug fixes. Thank you and keep them coming! https://maven.apache.org/plugins/maven-shade-plugin/ You should specify the version in your project's plugin configuration: org.apache.maven.plugins maven-shade-plugin 2.4.3 Release Notes - Maven Shade Plugin - Version 2.4.3 Bug [MSHADE-171] - "Access Denied" on Windows because shade plugin seems to try to open a directory as Zip-File [MSHADE-195] - createSourcesJar with source:jar-no-fork causes sources.jar to be deployed twice, causing the build to fail Improvement [MSHADE-213] - Clarify contract of ResourceTransformer wrt closing of streams [MSHADE-214] - Update jdependency to 1.1 to fix resource leaks Enjoy, -The Apache Maven team