mirror of https://github.com/apache/maven.git
add model converted from repoclean
PR: MRM-29 git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@349340 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2d277b04a0
commit
5ef9888de1
|
@ -0,0 +1,31 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>maven</artifactId>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<version>2.0.1-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>maven-model-converter</artifactId>
|
||||||
|
<name>Maven Model Converter</name>
|
||||||
|
<description>Converts between version 3.0.0 and version 4.0.0 models.</description>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-model</artifactId>
|
||||||
|
<version>2.0.1-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-model-v3</artifactId>
|
||||||
|
<version>2.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-container-default</artifactId>
|
||||||
|
<version>1.0-alpha-8</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,41 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2005-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.sun.corba.se.impl.ior.ObjectAdapterIdArray;
|
||||||
|
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.io.Writer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*/
|
||||||
|
public interface ArtifactPomRewriter
|
||||||
|
{
|
||||||
|
public static final String ROLE = ArtifactPomRewriter.class.getName();
|
||||||
|
|
||||||
|
public static final String V3_POM = "v3";
|
||||||
|
|
||||||
|
public static final String V4_POM = "v4";
|
||||||
|
|
||||||
|
public void rewrite( Reader from, Writer to, boolean reportOnly, String groupId, String artifactId, String version,
|
||||||
|
String packaging )
|
||||||
|
throws Exception;
|
||||||
|
|
||||||
|
List getWarnings();
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2005-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Model conversion interface.
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public interface ModelConverter
|
||||||
|
{
|
||||||
|
String ROLE = ModelConverter.class.getName();
|
||||||
|
|
||||||
|
Model translate( org.apache.maven.model.v3_0_0.Model v3Model )
|
||||||
|
throws PomTranslationException;
|
||||||
|
|
||||||
|
void validateV4Basics( Model model, String groupId, String artifactId, String version, String packaging );
|
||||||
|
|
||||||
|
List getWarnings();
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package org.apache.maven.model.converter;/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*/
|
||||||
|
public class PomTranslationException
|
||||||
|
extends Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
private final String groupId;
|
||||||
|
|
||||||
|
private final String artifactId;
|
||||||
|
|
||||||
|
private final String version;
|
||||||
|
|
||||||
|
public PomTranslationException( String groupId, String artifactId, String version, String message )
|
||||||
|
{
|
||||||
|
this( groupId, artifactId, version, message, null );
|
||||||
|
}
|
||||||
|
|
||||||
|
public PomTranslationException( String groupId, String artifactId, String version, Throwable cause )
|
||||||
|
{
|
||||||
|
this( groupId, artifactId, version, "[No message provided.]", cause );
|
||||||
|
}
|
||||||
|
|
||||||
|
public PomTranslationException( String groupId, String artifactId, String version, String message, Throwable cause )
|
||||||
|
{
|
||||||
|
super( "In POM{" + groupId + ":" + artifactId + ":" + version + "}: " + message, cause );
|
||||||
|
this.groupId = groupId;
|
||||||
|
this.artifactId = artifactId;
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,849 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.model.Build;
|
||||||
|
import org.apache.maven.model.CiManagement;
|
||||||
|
import org.apache.maven.model.Contributor;
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.DeploymentRepository;
|
||||||
|
import org.apache.maven.model.Developer;
|
||||||
|
import org.apache.maven.model.DistributionManagement;
|
||||||
|
import org.apache.maven.model.IssueManagement;
|
||||||
|
import org.apache.maven.model.License;
|
||||||
|
import org.apache.maven.model.MailingList;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.Notifier;
|
||||||
|
import org.apache.maven.model.Organization;
|
||||||
|
import org.apache.maven.model.Plugin;
|
||||||
|
import org.apache.maven.model.Resource;
|
||||||
|
import org.apache.maven.model.Scm;
|
||||||
|
import org.apache.maven.model.Site;
|
||||||
|
import org.apache.maven.model.v3_0_0.UnitTest;
|
||||||
|
import org.codehaus.plexus.util.StringUtils;
|
||||||
|
import org.codehaus.plexus.util.xml.Xpp3Dom;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*/
|
||||||
|
public class PomV3ToV4Translator
|
||||||
|
implements ModelConverter
|
||||||
|
{
|
||||||
|
private transient List discoveredPlugins = new ArrayList();
|
||||||
|
|
||||||
|
private List warnings;
|
||||||
|
|
||||||
|
public Model translate( org.apache.maven.model.v3_0_0.Model v3Model )
|
||||||
|
throws PomTranslationException
|
||||||
|
{
|
||||||
|
warnings = new ArrayList();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
String groupId = format( v3Model.getGroupId() );
|
||||||
|
String artifactId = format( v3Model.getArtifactId() );
|
||||||
|
|
||||||
|
String id = v3Model.getId();
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( id ) )
|
||||||
|
{
|
||||||
|
if ( StringUtils.isEmpty( groupId ) )
|
||||||
|
{
|
||||||
|
int plusIdx = id.indexOf( "+" );
|
||||||
|
if ( plusIdx > -1 )
|
||||||
|
{
|
||||||
|
groupId = id.substring( 0, plusIdx );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
groupId = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( artifactId ) )
|
||||||
|
{
|
||||||
|
artifactId = format( id );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String version = format( v3Model.getCurrentVersion() );
|
||||||
|
|
||||||
|
if ( version == null )
|
||||||
|
{
|
||||||
|
version = format( v3Model.getVersion() );
|
||||||
|
}
|
||||||
|
|
||||||
|
PomKey pomKey = new PomKey( groupId, artifactId, version );
|
||||||
|
|
||||||
|
warnOfUnsupportedMainModelElements( v3Model );
|
||||||
|
|
||||||
|
Model model = new Model();
|
||||||
|
model.setArtifactId( artifactId );
|
||||||
|
|
||||||
|
// moved this above the translation of the build, to allow
|
||||||
|
// additional plugins to be defined in v3 poms via
|
||||||
|
// <dependency><type>plugin</type></dependency>
|
||||||
|
model.setDependencies( translateDependencies( v3Model.getDependencies() ) );
|
||||||
|
|
||||||
|
model.setBuild( translateBuild( v3Model.getBuild() ) );
|
||||||
|
model.setCiManagement( translateCiManagementInfo( v3Model.getBuild() ) );
|
||||||
|
model.setContributors( translateContributors( v3Model.getContributors() ) );
|
||||||
|
|
||||||
|
model.setDescription( v3Model.getDescription() );
|
||||||
|
model.setDevelopers( translateDevelopers( v3Model.getDevelopers() ) );
|
||||||
|
|
||||||
|
model.setDistributionManagement( translateDistributionManagement( pomKey, v3Model ) );
|
||||||
|
|
||||||
|
model.setGroupId( groupId );
|
||||||
|
model.setInceptionYear( v3Model.getInceptionYear() );
|
||||||
|
model.setIssueManagement( translateIssueManagement( v3Model ) );
|
||||||
|
|
||||||
|
model.setLicenses( translateLicenses( v3Model.getLicenses() ) );
|
||||||
|
model.setMailingLists( translateMailingLists( v3Model.getMailingLists() ) );
|
||||||
|
model.setModelVersion( "4.0.0" );
|
||||||
|
model.setName( v3Model.getName() );
|
||||||
|
model.setOrganization( translateOrganization( v3Model.getOrganization() ) );
|
||||||
|
model.setPackaging( "jar" );
|
||||||
|
// TODO: not very good conversion - just omit for now
|
||||||
|
// model.setReporting( translateReports( v3Model.getReports(), reporter ) );
|
||||||
|
model.setScm( translateScm( v3Model ) );
|
||||||
|
model.setUrl( v3Model.getUrl() );
|
||||||
|
|
||||||
|
model.setVersion( version );
|
||||||
|
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
this.discoveredPlugins.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String format( String source )
|
||||||
|
{
|
||||||
|
return source == null ? null : source.replace( '+', '-' );
|
||||||
|
}
|
||||||
|
|
||||||
|
private CiManagement translateCiManagementInfo( org.apache.maven.model.v3_0_0.Build v3Build )
|
||||||
|
{
|
||||||
|
CiManagement ciMgmt = null;
|
||||||
|
|
||||||
|
if ( v3Build != null )
|
||||||
|
{
|
||||||
|
String nagEmailAddress = v3Build.getNagEmailAddress();
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( nagEmailAddress ) )
|
||||||
|
{
|
||||||
|
Notifier notifier = new Notifier();
|
||||||
|
|
||||||
|
notifier.setType( "mail" );
|
||||||
|
notifier.addConfiguration( "address", nagEmailAddress );
|
||||||
|
|
||||||
|
ciMgmt = new CiManagement();
|
||||||
|
ciMgmt.addNotifier( notifier );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ciMgmt;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void warnOfUnsupportedMainModelElements( org.apache.maven.model.v3_0_0.Model v3Model )
|
||||||
|
{
|
||||||
|
if ( StringUtils.isNotEmpty( v3Model.getExtend() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring non-portable parent declaration: " + v3Model.getExtend() );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Model.getGumpRepositoryId() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring gump repository id: \'" + v3Model.getGumpRepositoryId() +
|
||||||
|
"\'. This is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( notEmpty( v3Model.getVersions() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <versions/> section. This is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( notEmpty( v3Model.getBranches() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <branches/> section. This is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
Properties v3ModelProperties = v3Model.getProperties();
|
||||||
|
|
||||||
|
if ( v3ModelProperties != null && !v3ModelProperties.isEmpty() )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <properties/> section. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Model.getPackage() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <package/>. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( notEmpty( v3Model.getPackageGroups() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <packageGroups/> section. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Model.getLogo() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <logo/> for project. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Model.getShortDescription() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <shortDescription/>. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Scm translateScm( org.apache.maven.model.v3_0_0.Model v3Model )
|
||||||
|
{
|
||||||
|
Scm scm = null;
|
||||||
|
|
||||||
|
org.apache.maven.model.v3_0_0.Repository repo = v3Model.getRepository();
|
||||||
|
if ( repo != null )
|
||||||
|
{
|
||||||
|
scm = new Scm();
|
||||||
|
scm.setConnection( repo.getConnection() );
|
||||||
|
scm.setDeveloperConnection( repo.getDeveloperConnection() );
|
||||||
|
scm.setUrl( repo.getUrl() );
|
||||||
|
}
|
||||||
|
|
||||||
|
return scm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
private Reporting translateReports( List v3Reports, Reporter reporter )
|
||||||
|
throws ReportWriteException
|
||||||
|
{
|
||||||
|
Reporting reports = null;
|
||||||
|
if ( v3Reports != null && !v3Reports.isEmpty() )
|
||||||
|
{
|
||||||
|
reports = new Reporting();
|
||||||
|
for ( Iterator it = v3Reports.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
String reportName = (String) it.next();
|
||||||
|
|
||||||
|
Pattern pluginNamePattern = Pattern.compile( "maven-(.+)-plugin" );
|
||||||
|
Matcher matcher = pluginNamePattern.matcher( reportName );
|
||||||
|
|
||||||
|
String reportPluginName;
|
||||||
|
if ( !matcher.matches() )
|
||||||
|
{
|
||||||
|
warnings.add(
|
||||||
|
"Non-standard report name: \'" + reportName + "\'. Using entire name for plugin artifactId." );
|
||||||
|
|
||||||
|
reportPluginName = reportName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reportPluginName = matcher.group( 1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
ReportPlugin reportPlugin = new ReportPlugin();
|
||||||
|
|
||||||
|
reportPlugin.setGroupId( "maven" );
|
||||||
|
|
||||||
|
reportPlugin.setArtifactId( reportPluginName );
|
||||||
|
|
||||||
|
StringBuffer info = new StringBuffer();
|
||||||
|
|
||||||
|
info.append( "Using some derived information for report: \'" ).append( reportName ).append( "\'.\n" )
|
||||||
|
.append( "\to groupId: \'maven\'\n" ).append( "\to artifactId: \'" ).append( reportPluginName )
|
||||||
|
.append( "\'\n" ).append( "\to goal: \'report\'\n" )
|
||||||
|
.append( "\n" )
|
||||||
|
.append( "These values were extracted using the v3 report naming convention, but may be wrong." );
|
||||||
|
|
||||||
|
warnings.add( info.toString() );
|
||||||
|
|
||||||
|
reports.addPlugin( reportPlugin );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return reports;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
private Organization translateOrganization( org.apache.maven.model.v3_0_0.Organization v3Organization )
|
||||||
|
{
|
||||||
|
Organization organization = null;
|
||||||
|
|
||||||
|
if ( v3Organization != null )
|
||||||
|
{
|
||||||
|
organization = new Organization();
|
||||||
|
|
||||||
|
organization.setName( v3Organization.getName() );
|
||||||
|
organization.setUrl( v3Organization.getUrl() );
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Organization.getLogo() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <organization><logo/></organization>. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return organization;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List translateMailingLists( List v3MailingLists )
|
||||||
|
{
|
||||||
|
List mailingLists = new ArrayList();
|
||||||
|
|
||||||
|
if ( notEmpty( v3MailingLists ) )
|
||||||
|
{
|
||||||
|
for ( Iterator it = v3MailingLists.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.MailingList v3List = (org.apache.maven.model.v3_0_0.MailingList) it
|
||||||
|
.next();
|
||||||
|
MailingList list = new MailingList();
|
||||||
|
list.setArchive( v3List.getArchive() );
|
||||||
|
list.setName( v3List.getName() );
|
||||||
|
list.setSubscribe( v3List.getSubscribe() );
|
||||||
|
list.setUnsubscribe( v3List.getUnsubscribe() );
|
||||||
|
|
||||||
|
mailingLists.add( list );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return mailingLists;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List translateLicenses( List v3Licenses )
|
||||||
|
{
|
||||||
|
List licenses = new ArrayList();
|
||||||
|
|
||||||
|
if ( notEmpty( v3Licenses ) )
|
||||||
|
{
|
||||||
|
for ( Iterator it = v3Licenses.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.License v3License = (org.apache.maven.model.v3_0_0.License) it.next();
|
||||||
|
License license = new License();
|
||||||
|
license.setComments( v3License.getComments() );
|
||||||
|
license.setName( v3License.getName() );
|
||||||
|
license.setUrl( v3License.getUrl() );
|
||||||
|
|
||||||
|
licenses.add( license );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return licenses;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IssueManagement translateIssueManagement( org.apache.maven.model.v3_0_0.Model v3Model )
|
||||||
|
{
|
||||||
|
IssueManagement issueMgmt = null;
|
||||||
|
|
||||||
|
String issueTrackingUrl = v3Model.getIssueTrackingUrl();
|
||||||
|
if ( StringUtils.isNotEmpty( issueTrackingUrl ) )
|
||||||
|
{
|
||||||
|
issueMgmt = new IssueManagement();
|
||||||
|
issueMgmt.setUrl( issueTrackingUrl );
|
||||||
|
}
|
||||||
|
|
||||||
|
return issueMgmt;
|
||||||
|
}
|
||||||
|
|
||||||
|
private DistributionManagement translateDistributionManagement( PomKey pomKey,
|
||||||
|
org.apache.maven.model.v3_0_0.Model v3Model )
|
||||||
|
throws PomTranslationException
|
||||||
|
{
|
||||||
|
DistributionManagement distributionManagement = new DistributionManagement();
|
||||||
|
|
||||||
|
Site site = null;
|
||||||
|
|
||||||
|
String siteAddress = v3Model.getSiteAddress();
|
||||||
|
|
||||||
|
String siteDirectory = v3Model.getSiteDirectory();
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( siteAddress ) )
|
||||||
|
{
|
||||||
|
if ( !StringUtils.isEmpty( siteDirectory ) )
|
||||||
|
{
|
||||||
|
site = new Site();
|
||||||
|
|
||||||
|
site.setId( "default" );
|
||||||
|
|
||||||
|
site.setName( "Default Site" );
|
||||||
|
|
||||||
|
site.setUrl( "file://" + siteDirectory );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( StringUtils.isEmpty( siteDirectory ) )
|
||||||
|
{
|
||||||
|
throw new PomTranslationException( pomKey.groupId(), pomKey.artifactId(), pomKey.version(),
|
||||||
|
"Missing 'siteDirectory': Both siteAddress and siteDirectory must be set at the same time." );
|
||||||
|
}
|
||||||
|
|
||||||
|
site = new Site();
|
||||||
|
|
||||||
|
site.setId( "default" );
|
||||||
|
|
||||||
|
site.setName( "Default Site" );
|
||||||
|
|
||||||
|
site.setUrl( "scp://" + siteAddress + "/" + siteDirectory );
|
||||||
|
}
|
||||||
|
|
||||||
|
distributionManagement.setSite( site );
|
||||||
|
|
||||||
|
String distributionSite = v3Model.getDistributionSite();
|
||||||
|
|
||||||
|
String distributionDirectory = v3Model.getDistributionDirectory();
|
||||||
|
|
||||||
|
DeploymentRepository repository = null;
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( distributionSite ) )
|
||||||
|
{
|
||||||
|
if ( !StringUtils.isEmpty( distributionDirectory ) )
|
||||||
|
{
|
||||||
|
repository = new DeploymentRepository();
|
||||||
|
|
||||||
|
repository.setId( "default" );
|
||||||
|
|
||||||
|
repository.setName( "Default Repository" );
|
||||||
|
|
||||||
|
repository.setUrl( "file://" + distributionDirectory );
|
||||||
|
// throw new Exception( "Missing 'distributionSite': Both distributionSite and
|
||||||
|
// distributionDirectory must be set." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( StringUtils.isEmpty( distributionDirectory ) )
|
||||||
|
{
|
||||||
|
throw new PomTranslationException( pomKey.groupId(), pomKey.artifactId(), pomKey.version(),
|
||||||
|
"Missing 'distributionDirectory': must be set is 'distributionSite' is set." );
|
||||||
|
}
|
||||||
|
|
||||||
|
repository = new DeploymentRepository();
|
||||||
|
|
||||||
|
repository.setId( "default" );
|
||||||
|
|
||||||
|
repository.setName( "Default Repository" );
|
||||||
|
|
||||||
|
repository.setUrl( distributionSite + "/" + distributionDirectory );
|
||||||
|
}
|
||||||
|
|
||||||
|
distributionManagement.setRepository( repository );
|
||||||
|
|
||||||
|
distributionManagement.setStatus( "converted" );
|
||||||
|
|
||||||
|
if ( site == null && repository == null )
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return distributionManagement;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List translateDevelopers( List v3Developers )
|
||||||
|
{
|
||||||
|
List developers = new ArrayList();
|
||||||
|
|
||||||
|
if ( notEmpty( v3Developers ) )
|
||||||
|
{
|
||||||
|
for ( Iterator it = v3Developers.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.Developer v3Developer = (org.apache.maven.model.v3_0_0.Developer) it
|
||||||
|
.next();
|
||||||
|
|
||||||
|
Developer developer = new Developer();
|
||||||
|
|
||||||
|
developer.setEmail( v3Developer.getEmail() );
|
||||||
|
developer.setId( v3Developer.getId() );
|
||||||
|
developer.setName( v3Developer.getName() );
|
||||||
|
developer.setOrganization( v3Developer.getOrganization() );
|
||||||
|
developer.setRoles( v3Developer.getRoles() );
|
||||||
|
developer.setTimezone( v3Developer.getTimezone() );
|
||||||
|
developer.setUrl( v3Developer.getUrl() );
|
||||||
|
|
||||||
|
developers.add( developer );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return developers;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List translateDependencies( List v3Deps )
|
||||||
|
{
|
||||||
|
List deps = new ArrayList();
|
||||||
|
|
||||||
|
if ( notEmpty( v3Deps ) )
|
||||||
|
{
|
||||||
|
for ( Iterator it = v3Deps.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.Dependency v3Dep = (org.apache.maven.model.v3_0_0.Dependency) it.next();
|
||||||
|
|
||||||
|
String groupId = format( v3Dep.getGroupId() );
|
||||||
|
String artifactId = format( v3Dep.getArtifactId() );
|
||||||
|
|
||||||
|
String id = v3Dep.getId();
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( id ) )
|
||||||
|
{
|
||||||
|
if ( StringUtils.isEmpty( groupId ) )
|
||||||
|
{
|
||||||
|
int plusIdx = id.indexOf( "+" );
|
||||||
|
|
||||||
|
if ( plusIdx > -1 )
|
||||||
|
{
|
||||||
|
groupId = id.substring( 0, plusIdx );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
groupId = id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( artifactId ) )
|
||||||
|
{
|
||||||
|
artifactId = format( id );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String type = v3Dep.getType();
|
||||||
|
if ( "plugin".equals( type ) )
|
||||||
|
{
|
||||||
|
if ( "maven".equals( groupId ) )
|
||||||
|
{
|
||||||
|
groupId = "org.apache.maven.plugins";
|
||||||
|
}
|
||||||
|
|
||||||
|
Plugin plugin = new Plugin();
|
||||||
|
plugin.setGroupId( groupId );
|
||||||
|
plugin.setArtifactId( artifactId );
|
||||||
|
plugin.setVersion( format( v3Dep.getVersion() ) );
|
||||||
|
|
||||||
|
Xpp3Dom config = new Xpp3Dom( "configuration" );
|
||||||
|
|
||||||
|
Properties props = v3Dep.getProperties();
|
||||||
|
|
||||||
|
if ( !props.isEmpty() )
|
||||||
|
{
|
||||||
|
for ( Iterator propertyIterator = props.keySet().iterator(); propertyIterator.hasNext(); )
|
||||||
|
{
|
||||||
|
String key = (String) propertyIterator.next();
|
||||||
|
String value = props.getProperty( key );
|
||||||
|
|
||||||
|
Xpp3Dom child = new Xpp3Dom( key );
|
||||||
|
child.setValue( value );
|
||||||
|
|
||||||
|
config.addChild( child );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugin.setConfiguration( config );
|
||||||
|
|
||||||
|
this.discoveredPlugins.add( plugin );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Dependency dep = new Dependency();
|
||||||
|
|
||||||
|
dep.setGroupId( groupId );
|
||||||
|
dep.setArtifactId( artifactId );
|
||||||
|
dep.setVersion( v3Dep.getVersion() );
|
||||||
|
dep.setType( v3Dep.getType() );
|
||||||
|
|
||||||
|
String scope = v3Dep.getProperty( "scope" );
|
||||||
|
if ( StringUtils.isNotEmpty( scope ) )
|
||||||
|
{
|
||||||
|
dep.setScope( scope );
|
||||||
|
}
|
||||||
|
|
||||||
|
String optional = v3Dep.getProperty( "optional" );
|
||||||
|
if ( StringUtils.isNotEmpty( optional ) )
|
||||||
|
{
|
||||||
|
dep.setOptional( Boolean.parseBoolean( optional ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
deps.add( dep );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return deps;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List translateContributors( List v3Contributors )
|
||||||
|
{
|
||||||
|
List contributors = new ArrayList();
|
||||||
|
|
||||||
|
if ( notEmpty( v3Contributors ) )
|
||||||
|
{
|
||||||
|
for ( Iterator it = v3Contributors.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.Contributor v3Contributor = (org.apache.maven.model.v3_0_0.Contributor) it
|
||||||
|
.next();
|
||||||
|
|
||||||
|
Contributor contributor = new Contributor();
|
||||||
|
|
||||||
|
contributor.setEmail( v3Contributor.getEmail() );
|
||||||
|
contributor.setName( v3Contributor.getName() );
|
||||||
|
contributor.setOrganization( v3Contributor.getOrganization() );
|
||||||
|
contributor.setRoles( v3Contributor.getRoles() );
|
||||||
|
contributor.setTimezone( v3Contributor.getTimezone() );
|
||||||
|
contributor.setUrl( v3Contributor.getUrl() );
|
||||||
|
|
||||||
|
contributors.add( contributor );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return contributors;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Build translateBuild( org.apache.maven.model.v3_0_0.Build v3Build )
|
||||||
|
{
|
||||||
|
Build build = null;
|
||||||
|
if ( v3Build != null )
|
||||||
|
{
|
||||||
|
build = new Build();
|
||||||
|
|
||||||
|
warnOfUnsupportedBuildElements( v3Build );
|
||||||
|
|
||||||
|
build.setSourceDirectory( v3Build.getSourceDirectory() );
|
||||||
|
build.setTestSourceDirectory( v3Build.getUnitTestSourceDirectory() );
|
||||||
|
|
||||||
|
build.setResources( translateResources( v3Build.getResources() ) );
|
||||||
|
|
||||||
|
UnitTest unitTest = v3Build.getUnitTest();
|
||||||
|
if ( unitTest != null )
|
||||||
|
{
|
||||||
|
build.setTestResources( translateResources( unitTest.getResources() ) );
|
||||||
|
|
||||||
|
List testIncludes = unitTest.getIncludes();
|
||||||
|
|
||||||
|
List testExcludes = new ArrayList( unitTest.getExcludes() );
|
||||||
|
|
||||||
|
if ( notEmpty( testIncludes ) || notEmpty( testExcludes ) )
|
||||||
|
{
|
||||||
|
Plugin plugin = new Plugin();
|
||||||
|
plugin.setGroupId( "org.apache.maven.plugins" );
|
||||||
|
plugin.setArtifactId( "maven-surefire-plugin" );
|
||||||
|
|
||||||
|
Xpp3Dom config = new Xpp3Dom( "configuration" );
|
||||||
|
|
||||||
|
if ( notEmpty( testIncludes ) )
|
||||||
|
{
|
||||||
|
Xpp3Dom includes = new Xpp3Dom( "includes" );
|
||||||
|
for ( Iterator it = testIncludes.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
String includePattern = (String) it.next();
|
||||||
|
Xpp3Dom include = new Xpp3Dom( "include" );
|
||||||
|
include.setValue( includePattern );
|
||||||
|
|
||||||
|
includes.addChild( include );
|
||||||
|
}
|
||||||
|
|
||||||
|
config.addChild( includes );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( notEmpty( testExcludes ) )
|
||||||
|
{
|
||||||
|
Xpp3Dom excludes = new Xpp3Dom( "excludes" );
|
||||||
|
for ( Iterator it = testExcludes.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
String excludePattern = (String) it.next();
|
||||||
|
Xpp3Dom exclude = new Xpp3Dom( "exclude" );
|
||||||
|
exclude.setValue( excludePattern );
|
||||||
|
|
||||||
|
excludes.addChild( exclude );
|
||||||
|
}
|
||||||
|
|
||||||
|
config.addChild( excludes );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( config.getChildCount() > 0 )
|
||||||
|
{
|
||||||
|
plugin.setConfiguration( config );
|
||||||
|
}
|
||||||
|
|
||||||
|
build.addPlugin( plugin );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !this.discoveredPlugins.isEmpty() )
|
||||||
|
{
|
||||||
|
if ( build == null )
|
||||||
|
{
|
||||||
|
build = new Build();
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( Iterator it = this.discoveredPlugins.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
Plugin plugin = (Plugin) it.next();
|
||||||
|
|
||||||
|
build.addPlugin( plugin );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return build;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void warnOfUnsupportedBuildElements( org.apache.maven.model.v3_0_0.Build v3Build )
|
||||||
|
{
|
||||||
|
if ( notEmpty( v3Build.getSourceModifications() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <sourceModifications/> section. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Build.getAspectSourceDirectory() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <aspectSourceDirectory/>. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isNotEmpty( v3Build.getIntegrationUnitTestSourceDirectory() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Ignoring <integrationUnitTestSourceDirectory/>. It is not supported in v4 POMs." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List translateResources( List v3Resources )
|
||||||
|
{
|
||||||
|
List resources = new ArrayList();
|
||||||
|
|
||||||
|
if ( notEmpty( v3Resources ) )
|
||||||
|
{
|
||||||
|
for ( Iterator it = v3Resources.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.Resource v3Resource = (org.apache.maven.model.v3_0_0.Resource) it.next();
|
||||||
|
Resource resource = new Resource();
|
||||||
|
|
||||||
|
if ( v3Resource.getDirectory() == null )
|
||||||
|
{
|
||||||
|
resource.setDirectory( "." );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
resource.setDirectory( v3Resource.getDirectory() );
|
||||||
|
}
|
||||||
|
|
||||||
|
List excludes = new ArrayList( v3Resource.getExcludes() );
|
||||||
|
|
||||||
|
resource.setExcludes( excludes );
|
||||||
|
|
||||||
|
resource.setIncludes( v3Resource.getIncludes() );
|
||||||
|
resource.setTargetPath( v3Resource.getTargetPath() );
|
||||||
|
|
||||||
|
resources.add( resource );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return resources;
|
||||||
|
}
|
||||||
|
|
||||||
|
// private String pathPatternsToString( List patterns )
|
||||||
|
// {
|
||||||
|
// StringBuffer result = new StringBuffer();
|
||||||
|
//
|
||||||
|
// if ( notEmpty( patterns ) )
|
||||||
|
// {
|
||||||
|
// for ( Iterator it = patterns.iterator(); it.hasNext(); )
|
||||||
|
// {
|
||||||
|
// String pattern = (String) it.next();
|
||||||
|
//
|
||||||
|
// result.append( "," ).append( pattern );
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// result.setLength( result.length() - 1 );
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return result.toString();
|
||||||
|
// }
|
||||||
|
|
||||||
|
private boolean notEmpty( List test )
|
||||||
|
{
|
||||||
|
return test != null && !test.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void validateV4Basics( Model model, String groupId, String artifactId, String version, String packaging )
|
||||||
|
{
|
||||||
|
if ( StringUtils.isEmpty( model.getModelVersion() ) )
|
||||||
|
{
|
||||||
|
model.setModelVersion( "4.0.0" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( model.getGroupId() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Setting groupId on model using artifact information." );
|
||||||
|
model.setGroupId( groupId );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( model.getArtifactId() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Setting artifactId on model using artifact information." );
|
||||||
|
model.setArtifactId( artifactId );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( model.getVersion() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Setting version on model using artifact information." );
|
||||||
|
model.setVersion( version );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( StringUtils.isEmpty( model.getPackaging() ) )
|
||||||
|
{
|
||||||
|
warnings.add( "Setting packaging on model using artifact type information." );
|
||||||
|
model.setPackaging( packaging );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List getWarnings()
|
||||||
|
{
|
||||||
|
return warnings;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class PomKey
|
||||||
|
{
|
||||||
|
private final String groupId;
|
||||||
|
|
||||||
|
private final String artifactId;
|
||||||
|
|
||||||
|
private final String version;
|
||||||
|
|
||||||
|
PomKey( String groupId, String artifactId, String version )
|
||||||
|
{
|
||||||
|
this.groupId = groupId;
|
||||||
|
this.artifactId = artifactId;
|
||||||
|
this.version = version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String groupId()
|
||||||
|
{
|
||||||
|
return groupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String artifactId()
|
||||||
|
{
|
||||||
|
return artifactId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String version()
|
||||||
|
{
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,78 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.v3_0_0.io.xpp3.MavenXpp3Reader;
|
||||||
|
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
|
||||||
|
import org.codehaus.plexus.util.IOUtil;
|
||||||
|
import org.codehaus.plexus.util.StringUtils;
|
||||||
|
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.io.Writer;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*/
|
||||||
|
public class V3PomRewriter
|
||||||
|
implements ArtifactPomRewriter
|
||||||
|
{
|
||||||
|
private ModelConverter translator;
|
||||||
|
|
||||||
|
public void rewrite( Reader from, Writer to, boolean reportOnly, String groupId, String artifactId, String version,
|
||||||
|
String packaging )
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
Model v4Model;
|
||||||
|
|
||||||
|
if ( from != null )
|
||||||
|
{
|
||||||
|
MavenXpp3Reader v3Reader = new MavenXpp3Reader();
|
||||||
|
|
||||||
|
StringWriter w = new StringWriter();
|
||||||
|
IOUtil.copy( from, w );
|
||||||
|
String content = StringUtils.replace( w.toString(), "${pom.currentVersion}", "${project.version}" );
|
||||||
|
|
||||||
|
org.apache.maven.model.v3_0_0.Model v3Model = v3Reader.read( new StringReader( content ) );
|
||||||
|
v4Model = translator.translate( v3Model );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
v4Model = new Model();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( v4Model != null )
|
||||||
|
{
|
||||||
|
translator.validateV4Basics( v4Model, groupId, artifactId, version, packaging );
|
||||||
|
|
||||||
|
if ( !reportOnly )
|
||||||
|
{
|
||||||
|
MavenXpp3Writer v4Writer = new MavenXpp3Writer();
|
||||||
|
v4Writer.write( to, v4Model );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List getWarnings()
|
||||||
|
{
|
||||||
|
return translator.getWarnings();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
|
||||||
|
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
|
||||||
|
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.io.Writer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author jdcasey
|
||||||
|
*/
|
||||||
|
public class V4PomRewriter
|
||||||
|
implements ArtifactPomRewriter
|
||||||
|
{
|
||||||
|
private ModelConverter translator;
|
||||||
|
|
||||||
|
public void rewrite( Reader from, Writer to, boolean reportOnly, String groupId, String artifactId, String version,
|
||||||
|
String packaging )
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
Model model = null;
|
||||||
|
|
||||||
|
if ( from != null )
|
||||||
|
{
|
||||||
|
MavenXpp3Reader reader = new MavenXpp3Reader();
|
||||||
|
|
||||||
|
model = reader.read( from );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
model = new Model();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( model != null )
|
||||||
|
{
|
||||||
|
translator.validateV4Basics( model, groupId, artifactId, version, packaging );
|
||||||
|
|
||||||
|
if ( !reportOnly )
|
||||||
|
{
|
||||||
|
MavenXpp3Writer writer = new MavenXpp3Writer();
|
||||||
|
writer.write( to, model );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public List getWarnings()
|
||||||
|
{
|
||||||
|
return translator.getWarnings();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
<component-set>
|
||||||
|
<components>
|
||||||
|
<component>
|
||||||
|
<role>org.apache.maven.model.converter.ArtifactPomRewriter</role>
|
||||||
|
<role-hint>v3</role-hint>
|
||||||
|
<implementation>org.apache.maven.model.converter.V3PomRewriter</implementation>
|
||||||
|
<requirements>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.model.converter.ModelConverter</role>
|
||||||
|
</requirement>
|
||||||
|
</requirements>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
<component>
|
||||||
|
<role>org.apache.maven.model.converter.ArtifactPomRewriter</role>
|
||||||
|
<role-hint>v4</role-hint>
|
||||||
|
<implementation>org.apache.maven.model.converter.V4PomRewriter</implementation>
|
||||||
|
<requirements>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.model.converter.ModelConverter</role>
|
||||||
|
</requirement>
|
||||||
|
</requirements>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
<component>
|
||||||
|
<role>org.apache.maven.model.converter.ModelConverter</role>
|
||||||
|
<implementation>org.apache.maven.model.converter.PomV3ToV4Translator</implementation>
|
||||||
|
</component>
|
||||||
|
</components>
|
||||||
|
</component-set>
|
|
@ -0,0 +1,155 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2001-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import junit.framework.Assert;
|
||||||
|
import org.apache.maven.model.Build;
|
||||||
|
import org.apache.maven.model.Dependency;
|
||||||
|
import org.apache.maven.model.Model;
|
||||||
|
import org.apache.maven.model.Plugin;
|
||||||
|
import org.apache.maven.model.Resource;
|
||||||
|
import org.codehaus.plexus.PlexusTestCase;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class PomV3ToV4TranslatorTest
|
||||||
|
extends PlexusTestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
private ModelConverter translator;
|
||||||
|
|
||||||
|
private org.apache.maven.model.v3_0_0.Dependency v3Dep;
|
||||||
|
|
||||||
|
private org.apache.maven.model.v3_0_0.Model v3Model;
|
||||||
|
|
||||||
|
protected void setUp()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
translator = (ModelConverter) lookup( ModelConverter.ROLE );
|
||||||
|
|
||||||
|
v3Dep = new org.apache.maven.model.v3_0_0.Dependency();
|
||||||
|
v3Dep.setGroupId( "testGroup" );
|
||||||
|
v3Dep.setArtifactId( "testArtifact" );
|
||||||
|
v3Dep.setVersion( "1.0" );
|
||||||
|
|
||||||
|
v3Model = new org.apache.maven.model.v3_0_0.Model();
|
||||||
|
v3Model.setBuild( new org.apache.maven.model.v3_0_0.Build() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConvertedEmptyResourceDirectory()
|
||||||
|
throws PomTranslationException
|
||||||
|
{
|
||||||
|
org.apache.maven.model.v3_0_0.Resource v3Resource = new org.apache.maven.model.v3_0_0.Resource();
|
||||||
|
v3Resource.setIncludes( Arrays.asList( new String[]{"**/*.properties"} ) );
|
||||||
|
v3Model.getBuild().addResource( v3Resource );
|
||||||
|
|
||||||
|
Model result = translator.translate( v3Model );
|
||||||
|
Resource resource = (Resource) result.getBuild().getResources().get( 0 );
|
||||||
|
Assert.assertEquals( "check directory of v3Resource", ".", resource.getDirectory() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldConvertScopePropertyToDependencyScope()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
v3Dep.addProperty( "scope", "test" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
Model result = translator.translate( v3Model );
|
||||||
|
Assert.assertEquals( "test", ( (Dependency) result.getDependencies().get( 0 ) ).getScope() );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldConvertOptionalPropertyToDependencyOptional()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
v3Dep.addProperty( "optional", "true" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
Model result = translator.translate( v3Model );
|
||||||
|
Assert.assertTrue( ( (Dependency) result.getDependencies().get( 0 ) ).isOptional() );
|
||||||
|
|
||||||
|
v3Dep.addProperty( "optional", "TRUE" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
result = translator.translate( v3Model );
|
||||||
|
Assert.assertTrue( ( (Dependency) result.getDependencies().get( 0 ) ).isOptional() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testDontBreakWithMalformedOptionalProperty()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
v3Dep.addProperty( "optional", "xxx" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
Model result = translator.translate( v3Model );
|
||||||
|
Assert.assertFalse( ( (Dependency) result.getDependencies().get( 0 ) ).isOptional() );
|
||||||
|
|
||||||
|
v3Dep.addProperty( "optional", "" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
result = translator.translate( v3Model );
|
||||||
|
Assert.assertFalse( ( (Dependency) result.getDependencies().get( 0 ) ).isOptional() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldConvertDependencyWithTypePluginToBuildPluginEntry()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
v3Dep.setType( "plugin" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
Model result = translator.translate( v3Model );
|
||||||
|
|
||||||
|
Build build = result.getBuild();
|
||||||
|
|
||||||
|
Plugin plugin = (Plugin) build.getPlugins().get( 0 );
|
||||||
|
|
||||||
|
Assert.assertEquals( "testGroup", plugin.getGroupId() );
|
||||||
|
Assert.assertEquals( "testArtifact", plugin.getArtifactId() );
|
||||||
|
Assert.assertEquals( "1.0", plugin.getVersion() );
|
||||||
|
|
||||||
|
Assert.assertEquals( "check no dependencies", 0, result.getDependencies().size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testShouldConvertDependencyWithTypePluginAndGroupMavenToBuildPluginEntryWithOAMPluginsGroup()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
v3Dep.setGroupId( "maven" );
|
||||||
|
v3Dep.setType( "plugin" );
|
||||||
|
|
||||||
|
v3Model.addDependency( v3Dep );
|
||||||
|
|
||||||
|
Model result = translator.translate( v3Model );
|
||||||
|
|
||||||
|
Build build = result.getBuild();
|
||||||
|
|
||||||
|
Plugin plugin = (Plugin) build.getPlugins().get( 0 );
|
||||||
|
|
||||||
|
Assert.assertEquals( "org.apache.maven.plugins", plugin.getGroupId() );
|
||||||
|
Assert.assertEquals( "testArtifact", plugin.getArtifactId() );
|
||||||
|
Assert.assertEquals( "1.0", plugin.getVersion() );
|
||||||
|
|
||||||
|
Assert.assertEquals( "check no dependencies", 0, result.getDependencies().size() );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
package org.apache.maven.model.converter;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright 2005-2005 The Apache Software Foundation.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.codehaus.plexus.PlexusTestCase;
|
||||||
|
import org.codehaus.plexus.util.xml.Xpp3Dom;
|
||||||
|
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
|
||||||
|
|
||||||
|
import java.io.StringReader;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.io.Writer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test rewriter.
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
public class V3PomRewriterTest
|
||||||
|
extends PlexusTestCase
|
||||||
|
{
|
||||||
|
private V3PomRewriter rewriter;
|
||||||
|
|
||||||
|
protected void setUp()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
rewriter = (V3PomRewriter) lookup( V3PomRewriter.ROLE );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCurrentVersionExpressionConversion()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
String pom =
|
||||||
|
"<project><dependencies><dependency><groupId>g</groupId><artifactId>a</artifactId><version>${pom.currentVersion}</version></dependency></dependencies></project>";
|
||||||
|
|
||||||
|
Writer to = new StringWriter();
|
||||||
|
rewriter.rewrite( new StringReader( pom ), to, false, null, null, null, null );
|
||||||
|
|
||||||
|
Xpp3Dom dom = Xpp3DomBuilder.build( new StringReader( to.toString() ) );
|
||||||
|
String version = dom.getChild( "dependencies" ).getChild( "dependency" ).getChild( "version" ).getValue();
|
||||||
|
assertEquals( "check new version expression", "${project.version}", version );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
1
pom.xml
1
pom.xml
|
@ -173,6 +173,7 @@
|
||||||
<module>maven-core</module>
|
<module>maven-core</module>
|
||||||
<module>maven-error-diagnostics</module>
|
<module>maven-error-diagnostics</module>
|
||||||
<module>maven-model</module>
|
<module>maven-model</module>
|
||||||
|
<module>maven-model-converter</module>
|
||||||
<module>maven-monitor</module>
|
<module>maven-monitor</module>
|
||||||
<module>maven-plugin-api</module>
|
<module>maven-plugin-api</module>
|
||||||
<module>maven-plugin-descriptor</module>
|
<module>maven-plugin-descriptor</module>
|
||||||
|
|
Loading…
Reference in New Issue