You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Yuri Schimke (JIRA)" <ji...@codehaus.org> on 2008/03/19 16:43:47 UTC

[jira] Created: (MECLIPSE-407) EclipsePlugin parameter to skip dependency resolution

EclipsePlugin parameter to skip dependency resolution
-----------------------------------------------------

                 Key: MECLIPSE-407
                 URL: http://jira.codehaus.org/browse/MECLIPSE-407
             Project: Maven 2.x Eclipse Plugin
          Issue Type: Improvement
          Components: PDE support
    Affects Versions: 2.5
            Reporter: Yuri Schimke


Because all our projects are PDE projects, we don't need want all the JARs copied locally and added to the classpath.  

Because there is no option to stop them being added to .classpath apart from adding a lot of excludes, we have a subclass of EclipsePlugin that does a similar tihng to the M2EclipsePlugin

  protected void setupExtras() throws MojoExecutionException {
    if (isPdeProject()) {
      // disable normal dependency resolution
      setResolveDependencies(false);
    }
  }

However, it we could set a flag to stop dependency resolution, we would not need to maintain our own plugin.  i.e. add the parameter javadoc.


    /**
     * Flag for mojo implementations to control whether normal maven dependencies should be resolved. Default value is
     * true.
     *
     * @parameter expression="${eclipse.resolveDependencies}" default-value="true"
     */
    private boolean resolveDependencies = true;

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (MECLIPSE-407) EclipsePlugin parameter to skip dependency resolution

Posted by "Yuri Schimke (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MECLIPSE-407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=132572#action_132572 ] 

Yuri Schimke commented on MECLIPSE-407:
---------------------------------------

Because we want PDE dependencies in the Eclipse, we have the above change.  However we also want our products to deploy with either 

- built JAR files i.e. valid OSGi bundles built by maven
- With project open in Eclipse workspace so we can make code changes etc

To get the second to work, you also need a build.properties file, so we have ended up with the following

public class BaclipsePlugin extends EclipsePlugin {
  protected void setupExtras() throws MojoExecutionException {
    if (isPdeProject()) {
      // disable normal dependency resolution
      setResolveDependencies(false);
    }
  }

  protected void writeOsgiManifest(EclipseWriterConfig config) throws MojoExecutionException {
  }

  protected void writeBuildProperties(EclipseWriterConfig config) throws MojoExecutionException {
    File projectRelativeFile = new File(getEclipseProjectDir(), "build.properties");

    StringBuilder content = new StringBuilder();

    String sourceDirectories = getSourceDirectoriesString(config);
    
    content.append("source.. = " + sourceDirectories + "\n");
    
    String outputDirectories = getOutputDirectoriesString(config);
    
    content.append("output.. = " + outputDirectories + "\n");
    
    String binIncludes = getIncludesString(config);

    content.append("bin.includes = " + binIncludes + "\n");

    try {
      FileUtils.fileWrite(projectRelativeFile.getAbsolutePath(), content.toString());
    } catch (IOException e) {
      throw new MojoExecutionException(Messages.getString("EclipsePlugin.cantwritetofile", //$NON-NLS-1$
          projectRelativeFile.getAbsolutePath()));
    }
  }

  private String getIncludesString(EclipseWriterConfig config) {
    return "META-INF/";
  }

  private String getSourceDirectoriesString(EclipseWriterConfig config) {
    StringBuilder string = new StringBuilder();
    
    EclipseSourceDir[] sourceDirs = config.getSourceDirs();
    for (int i = 0; i <  sourceDirs.length; i++) {
      if (i > 0) {
        string.append(",");
      }
      
      string.append(sourceDirs[i].getPath());
    }
    
    return string.toString();
  }

  private String getOutputDirectoriesString(EclipseWriterConfig config) throws MojoExecutionException {
    Set paths = new HashSet();
    
    StringBuilder string = new StringBuilder();
    
    EclipseSourceDir[] sourceDirs = config.getSourceDirs();
    for (int i = 0; i <  sourceDirs.length; i++) {
      String outputDir = sourceDirs[i].getOutput();
      
      if (outputDir == null) {
        outputDir =
          IdeUtils.toRelativeAndFixSeparator( config.getProjectBaseDir(), config.getBuildOutputDirectory(), false );
      }
      
      if (paths.add(outputDir)) {
        if (string.length() > 0) {
          string.append(",");
        }
        
        string.append(outputDir);
      }
    }
    
    return string.toString();
  }
}


> EclipsePlugin parameter to skip dependency resolution
> -----------------------------------------------------
>
>                 Key: MECLIPSE-407
>                 URL: http://jira.codehaus.org/browse/MECLIPSE-407
>             Project: Maven 2.x Eclipse Plugin
>          Issue Type: Improvement
>          Components: PDE support
>    Affects Versions: 2.5
>            Reporter: Yuri Schimke
>
> Because all our projects are PDE projects, we don't need want all the JARs copied locally and added to the classpath.  
> Because there is no option to stop them being added to .classpath apart from adding a lot of excludes, we have a subclass of EclipsePlugin that does a similar tihng to the M2EclipsePlugin
>   protected void setupExtras() throws MojoExecutionException {
>     if (isPdeProject()) {
>       // disable normal dependency resolution
>       setResolveDependencies(false);
>     }
>   }
> However, it we could set a flag to stop dependency resolution, we would not need to maintain our own plugin.  i.e. add the parameter javadoc.
>     /**
>      * Flag for mojo implementations to control whether normal maven dependencies should be resolved. Default value is
>      * true.
>      *
>      * @parameter expression="${eclipse.resolveDependencies}" default-value="true"
>      */
>     private boolean resolveDependencies = true;

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Commented: (MECLIPSE-407) EclipsePlugin parameter to skip dependency resolution

Posted by "Yuri Schimke (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MECLIPSE-407?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_127905 ] 

Yuri Schimke commented on MECLIPSE-407:
---------------------------------------

If there are other ways of achieving this then please let us know.  BTW we also manually edit the Manifest so we currently use -Dmanifest=NONE so it doesn't try to overwrite it.

> EclipsePlugin parameter to skip dependency resolution
> -----------------------------------------------------
>
>                 Key: MECLIPSE-407
>                 URL: http://jira.codehaus.org/browse/MECLIPSE-407
>             Project: Maven 2.x Eclipse Plugin
>          Issue Type: Improvement
>          Components: PDE support
>    Affects Versions: 2.5
>            Reporter: Yuri Schimke
>
> Because all our projects are PDE projects, we don't need want all the JARs copied locally and added to the classpath.  
> Because there is no option to stop them being added to .classpath apart from adding a lot of excludes, we have a subclass of EclipsePlugin that does a similar tihng to the M2EclipsePlugin
>   protected void setupExtras() throws MojoExecutionException {
>     if (isPdeProject()) {
>       // disable normal dependency resolution
>       setResolveDependencies(false);
>     }
>   }
> However, it we could set a flag to stop dependency resolution, we would not need to maintain our own plugin.  i.e. add the parameter javadoc.
>     /**
>      * Flag for mojo implementations to control whether normal maven dependencies should be resolved. Default value is
>      * true.
>      *
>      * @parameter expression="${eclipse.resolveDependencies}" default-value="true"
>      */
>     private boolean resolveDependencies = true;

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira