Author: tchemit Date: 2011-08-19 17:04:21 +0200 (Fri, 19 Aug 2011) New Revision: 641 Url: http://nuiton.org/repositories/revision/maven-nuiton-skin/641 Log: Evolution #1692: Only generate editable links to scmwebeditor Added: trunk/src/license/ trunk/src/license/THIRD-PARTY.properties trunk/src/main/java/ trunk/src/main/java/org/ trunk/src/main/java/org/nuiton/ trunk/src/main/java/org/nuiton/maven/ trunk/src/main/java/org/nuiton/maven/skin/ trunk/src/main/java/org/nuiton/maven/skin/NuitonSiteRenderer.java trunk/src/main/java/org/nuiton/maven/skin/ReflectUtil.java trunk/src/main/java/org/nuiton/maven/skin/ScmwebeditorUtils.java trunk/src/main/resources/META-INF/plexus/ trunk/src/main/resources/META-INF/plexus/components.xml Modified: trunk/pom.xml trunk/src/main/resources/META-INF/maven/site.vm Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-08-16 23:11:45 UTC (rev 640) +++ trunk/pom.xml 2011-08-19 15:04:21 UTC (rev 641) @@ -67,13 +67,72 @@ </developers> - <packaging>jar</packaging> + <dependencies> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <version>${mavenVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>${mavenVersion}</version> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + + <dependency> + <groupId>commons-lang</groupId> + <artifactId>commons-lang</artifactId> + </dependency> + + <dependency> + <groupId>org.apache.velocity</groupId> + <artifactId>velocity</artifactId> + <version>1.5</version> + </dependency> + + <dependency> + <groupId>org.sonatype.sisu</groupId> + <artifactId>sisu-inject-plexus</artifactId> + <version>1.4.2</version> + </dependency> + + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-site-renderer</artifactId> + <version>${doxiaSitetoolsVersion}</version> + </dependency> + <dependency> + <groupId>org.apache.maven.shared</groupId> + <artifactId>maven-doxia-tools</artifactId> + <version>1.4</version> + </dependency> + <dependency> + <groupId>org.apache.maven.doxia</groupId> + <artifactId>doxia-core</artifactId> + <version>${doxiaVersion}</version> + <exclusions> + <exclusion> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + </exclusion> + </exclusions> + </dependency> + </dependencies> <properties> + <doxiaVersion>1.2</doxiaVersion> + <doxiaSitetoolsVersion>1.2</doxiaSitetoolsVersion> + <mavenVersion>3.0</mavenVersion> + <locales>fr,en</locales> <siteSourcesType>apt</siteSourcesType> - + </properties> <scm> Added: trunk/src/license/THIRD-PARTY.properties =================================================================== --- trunk/src/license/THIRD-PARTY.properties (rev 0) +++ trunk/src/license/THIRD-PARTY.properties 2011-08-19 15:04:21 UTC (rev 641) @@ -0,0 +1,22 @@ +# Generated by org.codehaus.mojo.license.AddThirdPartyMojo +#------------------------------------------------------------------------------- +# Already used licenses in project : +# - Apache License +# - Apache Public License 2.0 +# - BSD License +# - COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 +# - Common Public License Version 1.0 +# - Indiana University Extreme! Lab Software License, vesion 1.1.1 +# - Lesser General Public License (LPGL) +# - Lesser General Public License (LPGL) v 2.1 +# - MIT License +# - Public Domain +# - The Apache Software License, Version 2.0 +#------------------------------------------------------------------------------- +# Please fill the missing licenses for dependencies : +# +# +#Fri Aug 19 16:49:28 CEST 2011 +org.codehaus.plexus--plexus-i18n--1.0-beta-7=The Apache Software License, Version 2.0 +org.codehaus.plexus--plexus-velocity--1.1.7=The Apache Software License, Version 2.0 +oro--oro--2.0.8=The Apache Software License, Version 2.0 Property changes on: trunk/src/license/THIRD-PARTY.properties ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/src/main/java/org/nuiton/maven/skin/NuitonSiteRenderer.java =================================================================== --- trunk/src/main/java/org/nuiton/maven/skin/NuitonSiteRenderer.java (rev 0) +++ trunk/src/main/java/org/nuiton/maven/skin/NuitonSiteRenderer.java 2011-08-19 15:04:21 UTC (rev 641) @@ -0,0 +1,208 @@ +/* + * #%L + * Maven Nuiton Skin + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2006 - 2011 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.nuiton.maven.skin; + +import org.apache.commons.lang.StringUtils; +import org.apache.maven.doxia.siterenderer.DefaultSiteRenderer; +import org.apache.maven.doxia.siterenderer.DocumentRenderer; +import org.apache.maven.doxia.siterenderer.RendererException; +import org.apache.maven.doxia.siterenderer.SiteRenderingContext; +import org.apache.maven.doxia.siterenderer.sink.SiteRendererSink; +import org.apache.maven.doxia.tools.SiteTool; +import org.apache.maven.project.MavenProject; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.context.Context; + +import java.io.File; +import java.io.IOException; +import java.io.Writer; +import java.lang.reflect.Method; +import java.util.Collection; +import java.util.List; +import java.util.Locale; +import java.util.Map; + +/** + * Override of the DefaultSiteRenderer to make customize the velocity context. + * + * @author tchemit <chemit@codelutin.com> + * @version $Id$ + * @plexus.component role-hint="default" + * @since 1.0 + */ +public class NuitonSiteRenderer extends DefaultSiteRenderer { + + /** + * SiteTool. + * + * @component + */ + protected SiteTool siteTool; + + // this method is the private one from super class + protected Method createContextMethod; + + // this method is the private one from super class + protected Method writeTemplateMethod; + + private String siteSourcesType; + + private List<Locale> locales; + + private Locale locale; + + private MavenProject mavenProject; + + private String scmwebeditorPrefixURL; + + private String siteXmlScmwebeditorURL; + + private boolean scmwebeditorEnabled; + + protected Method getWriteTemplateMethod() { + if (writeTemplateMethod == null) { + writeTemplateMethod = ReflectUtil.getMethod( + getClass().getSuperclass(), + "writeTemplate", + new Class<?>[]{ + Writer.class, + Context.class, + SiteRenderingContext.class + }); + } + getLogger(); + return writeTemplateMethod; + } + + protected Method getCreateContextMethod() { + if (createContextMethod == null) { + createContextMethod = ReflectUtil.getMethod( + getClass().getSuperclass(), + "createContext", + new Class<?>[]{ + SiteRendererSink.class, + SiteRenderingContext.class} + ); + } + return createContextMethod; + } + + public void render(Collection<DocumentRenderer> documents, + SiteRenderingContext siteRenderingContext, + File outputDirectory) + throws RendererException, IOException { + + // prepare all common values for a given module + + + locale = siteRenderingContext.getLocale(); + + Map<String, ?> templateProperties = siteRenderingContext.getTemplateProperties(); + + String value = (String) templateProperties.get("scmwebeditorEnabled"); + scmwebeditorEnabled = StringUtils.isNotEmpty(value) && !"false".equals(value); + + if (scmwebeditorEnabled) { + + // get locales (defined in pom) + String localesAsStr = (String) templateProperties.get("locales"); + + // get locales as a list + List<Locale> locales = siteTool.getAvailableLocales(localesAsStr); + + this.locales = locales; + + mavenProject = (MavenProject) templateProperties.get("project"); + siteSourcesType = (String) mavenProject.getProperties().get("siteSourcesType"); + + String scm = mavenProject.getScm().getDeveloperConnection(); + String scmURL = scm.substring(8); + + String scmwebeditorUrl = (String) mavenProject.getProperties().get("scmwebeditorUrl"); + scmwebeditorPrefixURL = scmwebeditorUrl + "?address=" + scmURL + '/'; + + getLogger().info("SCMWebeditor prefix url = " + scmwebeditorPrefixURL); + + //FIXME tchemit 2011-08-19 must test if file exists (if first locale) to respect maven + // default loayout src/site/site.xml + String editFile = "src/site/site_" + locale + ".xml"; + siteXmlScmwebeditorURL = scmwebeditorPrefixURL + editFile; + + getLogger().debug("[" + editFile + "] scmwebeditor url = " + siteXmlScmwebeditorURL); + + } + super.render(documents, siteRenderingContext, outputDirectory); + + } + + @Override + public void generateDocument(Writer writer, + SiteRendererSink sink, + SiteRenderingContext siteRenderingContext) + throws RendererException { + + if (getLogger().isDebugEnabled()) { + getLogger().debug("Will generate document " + sink.getRenderingContext().getOutputName()); + } + Context context = createContext(sink, siteRenderingContext); + + writeTemplate(writer, context, siteRenderingContext); + } + + protected Context createContext(SiteRendererSink sink, + SiteRenderingContext siteRenderingContext) { + Method m = getCreateContextMethod(); + VelocityContext context = + ReflectUtil.invokeMethod(m, this, sink, siteRenderingContext); + + if (scmwebeditorEnabled) { + + // add our tool to velocity context + + ScmwebeditorUtils tools = + new ScmwebeditorUtils(context, getLogger()); + + tools.setLocale(locale); + tools.setLocales(locales); + tools.setMavenProject(mavenProject); + tools.setScmwebeditorURL(scmwebeditorPrefixURL); + tools.setSiteSourcesType(siteSourcesType); + tools.setSiteXmlScmwebeditorURL(siteXmlScmwebeditorURL); + context.put("ScmwebeditorUtils", tools); + + } + return context; + } + + protected void writeTemplate(Writer writer, + Context context, + SiteRenderingContext siteContext) + throws RendererException { + + Method m = getWriteTemplateMethod(); + ReflectUtil.invokeMethod(m, this, writer, context, siteContext); + } + +} \ No newline at end of file Property changes on: trunk/src/main/java/org/nuiton/maven/skin/NuitonSiteRenderer.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/src/main/java/org/nuiton/maven/skin/ReflectUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/maven/skin/ReflectUtil.java (rev 0) +++ trunk/src/main/java/org/nuiton/maven/skin/ReflectUtil.java 2011-08-19 15:04:21 UTC (rev 641) @@ -0,0 +1,58 @@ +/* + * #%L + * Maven Nuiton Skin + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2006 - 2011 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.nuiton.maven.skin; + +import java.lang.reflect.Method; + +/** + * Some usefull methods to obtains none accessible fields and method from + * some classes. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0.6 + */ +public class ReflectUtil { + + public static Method getMethod(Class<?> klass, String methodName, Class<?>[] paramTypes) { + try { + Method declaredMethod = klass.getDeclaredMethod(methodName, paramTypes); + declaredMethod.setAccessible(true); + return declaredMethod; + } catch (Exception e) { + throw new IllegalStateException("Could not get method [" + methodName + "] from parent class :(... ", e); + } + + } + + public static <O> O invokeMethod(Method m, Object o, Object... params) { + try { + O result = (O) m.invoke(o, params); + return result; + } catch (Exception e) { + throw new IllegalStateException("Could not invoke method [" + m.getName() + "] from parent class :(... ", e); + } + + } +} Property changes on: trunk/src/main/java/org/nuiton/maven/skin/ReflectUtil.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/src/main/java/org/nuiton/maven/skin/ScmwebeditorUtils.java =================================================================== --- trunk/src/main/java/org/nuiton/maven/skin/ScmwebeditorUtils.java (rev 0) +++ trunk/src/main/java/org/nuiton/maven/skin/ScmwebeditorUtils.java 2011-08-19 15:04:21 UTC (rev 641) @@ -0,0 +1,167 @@ +/* + * #%L + * Maven Nuiton Skin + * + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2006 - 2011 CodeLutin + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +package org.nuiton.maven.skin; + +import org.apache.maven.project.MavenProject; +import org.apache.velocity.VelocityContext; +import org.codehaus.plexus.logging.Logger; + +import java.io.File; +import java.util.List; +import java.util.Locale; + +/** + * A tool to be used in the velocity template. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0.6 + */ +public class ScmwebeditorUtils { + + private Logger logger; + + private VelocityContext context; + + private List<Locale> locales; + + private Locale locale; + + private String scmwebeditorURL; + + private String siteXmlScmwebeditorURL; + + private String siteSourcesType; + + private MavenProject mavenProject; + + public ScmwebeditorUtils(VelocityContext context, Logger logger) { + this.context = context; + this.logger = logger; + } + + public void setContext(VelocityContext context) { + this.context = context; + } + + public void setLocales(List<Locale> locales) { + this.locales = locales; + } + + public void setLocale(Locale locale) { + this.locale = locale; + } + + public void setScmwebeditorURL(String scmwebeditorURL) { + this.scmwebeditorURL = scmwebeditorURL; + } + + public void setSiteSourcesType(String siteSourcesType) { + this.siteSourcesType = siteSourcesType; + } + + public void setMavenProject(MavenProject mavenProject) { + this.mavenProject = mavenProject; + } + + public void setSiteXmlScmwebeditorURL(String siteXmlScmwebeditorURL) { + this.siteXmlScmwebeditorURL = siteXmlScmwebeditorURL; + } + + public String getSiteXmlScmwebeditorURL() { + return siteXmlScmwebeditorURL; + } + + public boolean isCurrentFileEditable() { + String editFile = getCurrentFileName(); + File file = getFile(editFile); + getLogger().debug("[" + editFile + "] on filesystem = " + file); + boolean exist = file.exists(); + return exist; + } + + public String getCurrentFileScmwebeditorURL() { + String editFile = getCurrentFileName(); + String relativePath = getRelativePath(editFile, '/'); + + String result = scmwebeditorURL + relativePath; + getLogger().debug("[" + editFile + "] scmwebeditor url = " + result); + return result; + } + + protected VelocityContext getContext() { + return context; + } + + protected Logger getLogger() { + return logger; + } + + protected MavenProject getProject() { + return mavenProject; + } + + protected String getAlignedFileName() { + return (String) context.get("alignedFileName"); + } + + protected String getCurrentFileName() { + return (String) context.get("currentFileName"); + } + + + protected boolean isFirstLocale() { + return locale.equals(locales.get(0)); + } + + + protected String getRelativePath(String editFile, + char separator) { + + String alignedFileName = getAlignedFileName(); + int lastIndex = alignedFileName.lastIndexOf(".") + 1; + if (lastIndex > 0) { + editFile = editFile.substring(0, lastIndex); + } + + String result = "src" + separator + "site" + separator; + if (!isFirstLocale()) { + result += locale.toString() + separator; + } + + result += siteSourcesType + separator; + result += editFile + siteSourcesType; + return result; + } + + protected File getFile(String editFile) { + File basedir = getProject().getBasedir(); + + String relativePath = getRelativePath(editFile, File.separatorChar); + + File result = new File(basedir, relativePath); + return result; + } + +} Property changes on: trunk/src/main/java/org/nuiton/maven/skin/ScmwebeditorUtils.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/src/main/resources/META-INF/maven/site.vm =================================================================== --- trunk/src/main/resources/META-INF/maven/site.vm 2011-08-16 23:11:45 UTC (rev 640) +++ trunk/src/main/resources/META-INF/maven/site.vm 2011-08-19 15:04:21 UTC (rev 641) @@ -1,16 +1,5 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -## set in global variable firstLocale the first (says main) locale of site -#macro ( computeDefaultLocale $locales ) - #set ( $myindex = $locales.trim().indexOf(",") ) - #if ( $myindex == -1 ) - #set ( $firstLocale = $locales.trim() ) - #else - ##set ( $myindex = $myindex - 1 ) - #set ( $firstLocale = $locales.trim().substring( 0, $myindex ) ) - #end -#end - #macro ( link $href $name ) #if ( ( $href.toLowerCase().startsWith("http") || $href.toLowerCase().startsWith("https") ) ) <a href="$href" class="externalLink">$name</a> @@ -19,29 +8,6 @@ #end #end - -#macro ( linkDocument $scm $root $fileformat $localesite $defaultLocalesite, $name ) - #set ( $lastIndex = $root.lastIndexOf(".") ) - #set ( $lastIndex = $lastIndex + 1 ) - #if ($lastIndex > 0) - #set ( $editFile = $root.substring(0 , $lastIndex ) ) - #set ( $urlScm = $scm.substring( 8 ) ) - - #if ( $localesite == $defaultLocalesite ) - <a href="${project.properties.scmwebeditorUrl}?address=${urlScm}/src/site/${fileformat}/$editFile$fileformat" class="externalLink">$name</a> - #else - <a href="${project.properties.scmwebeditorUrl}?address=${urlScm}/src/site/$localesite${fileformat}/$editFile$fileformat" class="externalLink">$name</a> - #end - #end -#end - -#macro ( linkSiteXml $scm $localesite $name) - #set ( $urlScm = $scm.substring( 8 ) ) - - <a href="${project.properties.scmwebeditorUrl}?address=${urlScm}/src/site/site_${locale}.xml" class="externalLink">$name</a> -#end - - #macro ( banner $banner $id ) #if ( $banner ) #if( $banner.href ) @@ -75,7 +41,6 @@ #end #macro ( links $links ) - #computeDefaultLocale( $locales ) #set ( $sitemapUrl = $PathTool.calculateLink( "./sitemap.html", $relativePath ) ) #set ( $sitemapUrl = $sitemapUrl.replaceAll( "\\", "/" ) ) #set ( $sitemapLabel = $i18n.getString( "maven-nuiton-skin", $locale, "goto.sitemap" ) ) @@ -94,10 +59,12 @@ ## | ##end #end - #if ( "$scmwebeditorEnabled" != "false" ) + #if ( "$scmwebeditorEnabled" != "false") + #if ( "$ScmwebeditorUtils.isCurrentFileEditable()" != "false") | - #linkDocument ( $project.scm.developerConnection , $alignedFileName , $project.properties.siteSourcesType , $locale , $firstLocale , $i18n.getString( "maven-nuiton-skin", $locale, "edit.scm.page" ) ) - #end + #link ( $ScmwebeditorUtils.getCurrentFileScmwebeditorURL() $i18n.getString( "maven-nuiton-skin", $locale, "edit.scm.page" ) ) + #end #end + #end #macro ( breadcrumbs $breadcrumbs ) @@ -181,14 +148,10 @@ #macro ( mainMenu $menus ) #if ( "$scmwebeditorEnabled" != "false" ) - #computeDefaultLocale( $locales ) - #set ($xmlExtention = ".xml") - #linkSiteXml ( $project.scm.developerConnection , $locale , $i18n.getString( "maven-nuiton-skin", $locale, "edit.scm.menu" ) ) + #link ( $ScmwebeditorUtils.getSiteXmlScmwebeditorURL() $i18n.getString( "maven-nuiton-skin", $locale, "edit.scm.menu" ) ) #end #foreach( $menu in $menus ) - ##set ($xmlExtention = ".xml") - ##<a href="$project.properties.scmwebeditorUrl?adresse=$project.scm.developerConnection&file_name=site_$locale$xmlExtention&project_url=$project.url/$locale/$alignedFileName&lang=$locale&defaultLang=$project.properties.defaultLocale" class="externalLink">$i18n.getString( "maven-nuiton-skin", $locale, "edit.scm.menu" )</a> #if ( $menu.name ) <h5>$menu.name</h5> #end Added: trunk/src/main/resources/META-INF/plexus/components.xml =================================================================== --- trunk/src/main/resources/META-INF/plexus/components.xml (rev 0) +++ trunk/src/main/resources/META-INF/plexus/components.xml 2011-08-19 15:04:21 UTC (rev 641) @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + #%L + Maven Nuiton Skin + + $Id$ + $HeadURL$ + %% + Copyright (C) 2006 - 2011 CodeLutin + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> + +<component-set> + <components> + <component> + <role>org.apache.maven.doxia.siterenderer.Renderer</role> + <role-hint>default</role-hint> + <implementation>org.nuiton.maven.skin.NuitonSiteRenderer</implementation> + <requirements> + <requirement> + <role>org.apache.maven.doxia.tools.SiteTool</role> + <field-name>siteTool</field-name> + <role-hint>default</role-hint> + </requirement> + <requirement> + <role>org.codehaus.plexus.velocity.VelocityComponent</role> + <field-name>velocity</field-name> + <role-hint>doxia-default</role-hint> + </requirement> + <requirement> + <role>org.apache.maven.doxia.module.site.manager.SiteModuleManager</role> + <field-name>siteModuleManager</field-name> + </requirement> + <requirement> + <role>org.apache.maven.doxia.Doxia</role> + <field-name>doxia</field-name> + </requirement> + <requirement> + <role>org.codehaus.plexus.i18n.I18N</role> + <field-name>i18n</field-name> + </requirement> + </requirements> + </component> + </components> +</component-set> Property changes on: trunk/src/main/resources/META-INF/plexus/components.xml ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native