2015-06-15 5 views
1

На картинке ниже, я хочуИзменить запись плюща классов

  1. Ivy настройка пути не включает $ {ivyproject_loc}
  2. Файлов недвижимости НЕ включают $ {project_loc}

Вот что я имею прямо сейчас. Я думал, что было бы проще удалить библиотеку плюща и добавить ее так, как я ее хочу. Я знаю, как добавить, но какой лучший способ удалить?

protected void changeIvyClasspath(IProject project) throws CoreException { 

    if(project.hasNature(JavaCore.NATURE_ID)){ 
     IJavaProject jproject = JavaCore.create(project); 
     IClasspathEntry[] entries = jproject.getRawClasspath(); 
     for (IClasspathEntry entry : entries) { 
      if(entry.toString().contains("org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER")){ 
       if(entry.toString().contains("project_loc") || entry.toString().contains("ivyproject_loc")){ 
        //how to remove entry? 

        addIvyToClasspath(); 
       } 
      } 
     } 
    } 
} 

Что-то еще, что я пытался изменить существующие настройки, но это не сработало.

Вот код, который пытался сделать:

protected void changeIvyClasspath(IProject project) throws CoreException { 

    if(project.hasNature(JavaCore.NATURE_ID)){ 
     IJavaProject jproject = JavaCore.create(project); 
     IClasspathEntry[] entries = jproject.getRawClasspath(); 
     for (IClasspathEntry entry : entries) { 
      if(entry.toString().contains("org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER")){ 
       if(entry.toString().contains("project_loc") || entry.toString().contains("ivyproject_loc")){ 
        IvyClasspathContainer ivycp = IvyClasspathContainerHelper.getContainer(entry.getPath(), jproject); 
        IvyClasspathContainerConfiguration conf = new IvyClasspathContainerConfiguration(jproject, "ivy.xml", true); 
        SettingsSetup ss = conf.getIvySettingsSetup(); 
        List<String> props = new ArrayList<String>(); 
        props.add("project.properties"); 
        props.add(".properties/eclipse.properties"); 
        ss.setPropertyFiles(props); 
        conf.setIvySettingsSetup(ss); 
        ss.setIvySettingsPath(".properties/ivysettings.xml"); 
        ivycp.setConf(conf); 
        ivycp.launchResolve(false, null); 
       } 
      } 
     } 
    } 
} 

ответ

0

С проектом, вы можете получить все записи пути класса. Я прошел и исключил записи плюща. Затем я снова добавил их с правильными файлами пути и свойствами. Теперь пути не включают $ {ivyproject_loc} и $ {project_loc}.

Вот код:

protected void changeIvyClasspath(IProject project, IProgressMonitor monitor) throws CoreException { 

    if(project.hasNature(JavaCore.NATURE_ID)){ 
     IJavaProject jproject = JavaCore.create(project); 
     List<IClasspathEntry> iClasspathEntryList = new ArrayList<IClasspathEntry>(); 

     IClasspathEntry[] entries = jproject.getRawClasspath(); 
     for (IClasspathEntry entry : entries) { 
      //exclude ivy.xml entries 
      if (!entry.getPath().toString().contains("ivy.xml")) { 
       iClasspathEntryList.add(entry); 
      } 
     } 

     //Add the ivy entries with the correct class path 
     addIvyToClasspath(new String[] { "compile", "runtime" }, true, iClasspathEntryList, project, jproject, monitor); 
     addIvyToClasspath(new String[] { "provided", "test" }, false, iClasspathEntryList, project, jproject, monitor); 

     entries = iClasspathEntryList.toArray(new IClasspathEntry[iClasspathEntryList.size()]); 

     jproject.setRawClasspath(entries, jproject.getOutputLocation(), null); 
    } 
} 
Смежные вопросы