2016-12-09 12 views
6

私は、既存のスタジオプロジェクトにJavaコードを通じてmavenの性質を追加したいと考えています。 eclipseでは、右クリック - > configure-> Mavenオプションに変換することでこれを行うことができます。 Javaコードから呼び出すにはどうすればよいですか? 私はを右クリック - >メニュー - >生成POMオプションをプロジェクトに追加しました。これをクリックするとプロジェクトのPOMファイルが生成され、同じクリックでそれにmaven natureを追加します。 javaコードからmavenに変換するeclipsesのデフォルトコードを呼び出せますか?スタジオプロジェクトにmaven natureを追加する方法

答えて

7

解決策を見つけました。以下に示すように、プロジェクトにmavenの性質を追加することができます - 私はEclipseプロジェクトを持っています。

import org.eclipse.core.resources.ICommand; 
import org.eclipse.core.resources.IProject; 
import org.eclipse.core.resources.IProjectDescription; 
import org.eclipse.core.runtime.NullProgressMonitor; 
import org.eclipse.ui.IWorkbenchWindow; 

private void addMavenNature(IProject project){ 
    IProjectDescription desc = project.getDescription(); 

    String[] prevNatures = desc.getNatureIds(); //it takes all previous natures of project i.e studioNature,javanature 
    String[] newNatures = new String[prevNatures.length + 1]; 

    System.arraycopy(prevNatures, 0, newNatures, 0, prevNatures.length); 

    newNatures[prevNatures.length] = "org.eclipse.m2e.core.maven2Nature"; //add maven nature to the project 
    desc.setNatureIds(newNatures); 

    project.setDescription(desc, new NullProgressMonitor()); 

    ICommand[] commands = desc.getBuildSpec(); 
    List<ICommand> commandList = Arrays.asList(commands); 
    ICommand build = new BuildCommand(); 
    build.setBuilderName("org.eclipse.m2e.core.maven2Builder"); //add maven builder to the project 
    List<ICommand> modList = new ArrayList<>(commandList); 
    modList.add(build); 
    desc.setBuildSpec(modList.toArray(new ICommand[]{})); 
} 
+0

ここに「プロジェクト」の詳細を含めてください。あなたは 'IProjectDescription'、' ICommand'をどこからインポートしますか?上記のコードを使用してプロジェクトがどのようにmavenプロジェクトに変換されるかについての簡単な説明もあります。 – nullpointer

+0

@nullpointer私は自分の答えを編集しました – Disha

関連する問題