Auto generate eclipse launch files
This commit is contained in:
		
							parent
							
								
									f61b06f616
								
							
						
					
					
						commit
						96e0dd30be
					
				
					 9 changed files with 88 additions and 18 deletions
				
			
		|  | @ -11,7 +11,7 @@ targetCompatibility = 1.8 | |||
| 
 | ||||
| group = 'net.fabricmc' | ||||
| archivesBaseName = project.name | ||||
| version = '0.1.0-SNAPSHOT' | ||||
| version = '0.1.1-SNAPSHOT' | ||||
| 
 | ||||
| def build = "local" | ||||
| def ENV = System.getenv() | ||||
|  |  | |||
|  | @ -222,6 +222,7 @@ public class AbstractPlugin implements Plugin<Project> { | |||
| 			dependencyManager.handleDependencies(project1); | ||||
| 
 | ||||
| 			project1.getTasks().getByName("idea").finalizedBy(project1.getTasks().getByName("genIdeaWorkspace")); | ||||
| 			project1.getTasks().getByName("eclipse").finalizedBy(project1.getTasks().getByName("genEclipseRuns")); | ||||
| 
 | ||||
| 			SetupIntelijRunConfigs.setup(project1); | ||||
| 
 | ||||
|  |  | |||
|  | @ -40,6 +40,7 @@ public class LoomGradlePlugin extends AbstractPlugin { | |||
| 
 | ||||
| 		makeTask("genIdeaWorkspace", GenIdeaProjectTask.class).dependsOn("idea").setGroup("ide"); | ||||
| 		makeTask("vscode", GenVsCodeProjectTask.class).setGroup("ide"); | ||||
| 		makeTask("genEclipseRuns", GenEclipseRunsTask.class).setGroup("ide"); | ||||
| 
 | ||||
| 		makeTask("runClient", RunClientTask.class).dependsOn("buildNeeded").setGroup("minecraftMapped"); | ||||
| 		makeTask("runServer", RunServerTask.class).dependsOn("buildNeeded").setGroup("minecraftMapped"); | ||||
|  |  | |||
							
								
								
									
										53
									
								
								src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/main/java/net/fabricmc/loom/task/GenEclipseRunsTask.java
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,53 @@ | |||
| /* | ||||
|  * This file is part of fabric-loom, licensed under the MIT License (MIT). | ||||
|  * | ||||
|  * Copyright (c) 2016, 2017, 2018 FabricMC | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|  * of this software and associated documentation files (the "Software"), to deal | ||||
|  * in the Software without restriction, including without limitation the rights | ||||
|  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|  * copies of the Software, and to permit persons to whom the Software is | ||||
|  * furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice and this permission notice shall be included in all | ||||
|  * copies or substantial portions of the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
|  * SOFTWARE. | ||||
|  */ | ||||
| 
 | ||||
| package net.fabricmc.loom.task; | ||||
| 
 | ||||
| import net.fabricmc.loom.util.RunConfig; | ||||
| import org.apache.commons.io.FileUtils; | ||||
| import org.gradle.api.DefaultTask; | ||||
| import org.gradle.api.tasks.TaskAction; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| 
 | ||||
| public class GenEclipseRunsTask extends DefaultTask { | ||||
| 
 | ||||
|     @TaskAction | ||||
|     public void genRuns() throws IOException { | ||||
| 	    File clientRunConfigs = new File(getProject().getRootDir(), "Minecraft_Client.launch"); | ||||
| 	    File serverRunConfigs = new File(getProject().getRootDir(), "Minecraft_Server.launch"); | ||||
| 
 | ||||
| 	    String clientRunConfig = RunConfig.clientRunConfig(getProject()).fromDummy("eclipse_run_config_template.xml"); | ||||
| 	    String serverRunConfig = RunConfig.serverRunConfig(getProject()).fromDummy("eclipse_run_config_template.xml"); | ||||
| 
 | ||||
| 	    if(!clientRunConfigs.exists()) | ||||
| 		    FileUtils.writeStringToFile(clientRunConfigs, clientRunConfig, StandardCharsets.UTF_8); | ||||
| 	    if(!serverRunConfigs.exists()) | ||||
| 		    FileUtils.writeStringToFile(serverRunConfigs, serverRunConfig, StandardCharsets.UTF_8); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | @ -25,7 +25,7 @@ | |||
| package net.fabricmc.loom.task; | ||||
| 
 | ||||
| import net.fabricmc.loom.LoomGradleExtension; | ||||
| import net.fabricmc.loom.util.IdeaRunConfig; | ||||
| import net.fabricmc.loom.util.RunConfig; | ||||
| import org.gradle.api.DefaultTask; | ||||
| import org.gradle.api.Project; | ||||
| import org.gradle.api.tasks.TaskAction; | ||||
|  | @ -73,8 +73,8 @@ public class GenIdeaProjectTask extends DefaultTask { | |||
| 			throw new RuntimeException("Failed to generate intellij run configurations (runManager was not found)"); | ||||
| 		} | ||||
| 
 | ||||
| 		runManager.appendChild(IdeaRunConfig.clientRunConfig(project).genRuns(runManager)); | ||||
| 		runManager.appendChild(IdeaRunConfig.serverRunConfig(project).genRuns(runManager)); | ||||
| 		runManager.appendChild(RunConfig.clientRunConfig(project).genRuns(runManager)); | ||||
| 		runManager.appendChild(RunConfig.serverRunConfig(project).genRuns(runManager)); | ||||
| 
 | ||||
| 		TransformerFactory transformerFactory = TransformerFactory.newInstance(); | ||||
| 		Transformer transformer = transformerFactory.newTransformer(); | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ package net.fabricmc.loom.task; | |||
| import com.google.gson.Gson; | ||||
| import com.google.gson.GsonBuilder; | ||||
| import net.fabricmc.loom.LoomGradleExtension; | ||||
| import net.fabricmc.loom.util.IdeaRunConfig; | ||||
| import net.fabricmc.loom.util.RunConfig; | ||||
| import org.apache.commons.io.FileUtils; | ||||
| import org.gradle.api.DefaultTask; | ||||
| import org.gradle.api.tasks.TaskAction; | ||||
|  | @ -57,8 +57,8 @@ public class GenVsCodeProjectTask extends DefaultTask { | |||
|         } | ||||
| 
 | ||||
|         VsCodeLaunch launch = new VsCodeLaunch(); | ||||
|         launch.add(IdeaRunConfig.clientRunConfig(getProject())); | ||||
|         launch.add(IdeaRunConfig.serverRunConfig(getProject())); | ||||
|         launch.add(RunConfig.clientRunConfig(getProject())); | ||||
|         launch.add(RunConfig.serverRunConfig(getProject())); | ||||
| 
 | ||||
|         Gson gson = new GsonBuilder().setPrettyPrinting().create(); | ||||
|         String json = gson.toJson(launch); | ||||
|  | @ -79,7 +79,7 @@ public class GenVsCodeProjectTask extends DefaultTask { | |||
|         public String version = "0.2.0"; | ||||
|         public List<VsCodeConfiguration> configurations = new ArrayList<>(); | ||||
| 
 | ||||
|         public void add(IdeaRunConfig runConfig) { | ||||
|         public void add(RunConfig runConfig) { | ||||
|             configurations.add(new VsCodeConfiguration(runConfig)); | ||||
|         } | ||||
|     } | ||||
|  | @ -95,7 +95,7 @@ public class GenVsCodeProjectTask extends DefaultTask { | |||
|         public String vmArgs; | ||||
|         public String args; | ||||
| 
 | ||||
|         public VsCodeConfiguration(IdeaRunConfig runConfig) { | ||||
|         public VsCodeConfiguration(RunConfig runConfig) { | ||||
|             this.name = runConfig.configName; | ||||
|             this.mainClass = runConfig.mainClass; | ||||
|             this.vmArgs = runConfig.vmArgs; | ||||
|  |  | |||
|  | @ -42,7 +42,7 @@ import java.io.InputStream; | |||
| import java.nio.charset.StandardCharsets; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class IdeaRunConfig { | ||||
| public class RunConfig { | ||||
| 	public String configName; | ||||
| 	public String projectName; | ||||
| 	public String mainClass; | ||||
|  | @ -82,12 +82,12 @@ public class IdeaRunConfig { | |||
| 		return e; | ||||
| 	} | ||||
| 
 | ||||
| 	public static IdeaRunConfig clientRunConfig(Project project){ | ||||
| 	public static RunConfig clientRunConfig(Project project){ | ||||
| 		LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); | ||||
| 		MinecraftProvider minecraftProvider =  extension.getMinecraftProvider(); | ||||
| 		MinecraftVersionInfo minecraftVersionInfo = minecraftProvider.versionInfo; | ||||
| 
 | ||||
| 		IdeaRunConfig ideaClient = new IdeaRunConfig(); | ||||
| 		RunConfig ideaClient = new RunConfig(); | ||||
| 		ideaClient.mainClass = "net.minecraft.launchwrapper.Launch"; | ||||
| 		ideaClient.projectName = project.getName(); | ||||
| 		ideaClient.configName = "Minecraft Client"; | ||||
|  | @ -98,10 +98,10 @@ public class IdeaRunConfig { | |||
| 		return ideaClient; | ||||
| 	} | ||||
| 
 | ||||
| 	public static IdeaRunConfig serverRunConfig(Project project){ | ||||
| 	public static RunConfig serverRunConfig(Project project){ | ||||
| 		LoomGradleExtension extension = project.getExtensions().getByType(LoomGradleExtension.class); | ||||
| 
 | ||||
| 		IdeaRunConfig ideaServer = new IdeaRunConfig(); | ||||
| 		RunConfig ideaServer = new RunConfig(); | ||||
| 		ideaServer.mainClass = "net.minecraft.launchwrapper.Launch"; | ||||
| 		ideaServer.projectName = project.getName(); | ||||
| 		ideaServer.configName = "Minecraft Server"; | ||||
|  | @ -112,8 +112,8 @@ public class IdeaRunConfig { | |||
| 		return ideaServer; | ||||
| 	} | ||||
| 
 | ||||
| 	public String fromDummy() throws IOException { | ||||
| 		InputStream input = SetupIntelijRunConfigs.class.getClassLoader().getResourceAsStream("idea_run_config_template.xml"); | ||||
| 	public String fromDummy(String dummy) throws IOException { | ||||
| 		InputStream input = SetupIntelijRunConfigs.class.getClassLoader().getResourceAsStream(dummy); | ||||
| 		String dummyConfig = IOUtils.toString(input, StandardCharsets.UTF_8); | ||||
| 		input.close(); | ||||
| 
 | ||||
|  | @ -63,8 +63,8 @@ public class SetupIntelijRunConfigs { | |||
| 			runConfigsDir.mkdirs(); | ||||
| 		} | ||||
| 
 | ||||
| 		String clientRunConfig = IdeaRunConfig.clientRunConfig(project).fromDummy(); | ||||
| 		String serverRunConfig = IdeaRunConfig.serverRunConfig(project).fromDummy(); | ||||
| 		String clientRunConfig = RunConfig.clientRunConfig(project).fromDummy("idea_run_config_template.xml"); | ||||
| 		String serverRunConfig = RunConfig.serverRunConfig(project).fromDummy("idea_run_config_template.xml"); | ||||
| 
 | ||||
| 		if(!clientRunConfigs.exists()) | ||||
| 			FileUtils.writeStringToFile(clientRunConfigs, clientRunConfig, StandardCharsets.UTF_8); | ||||
|  |  | |||
							
								
								
									
										15
									
								
								src/main/resources/eclipse_run_config_template.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/main/resources/eclipse_run_config_template.xml
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||
| <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication"> | ||||
|     <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"> | ||||
|         <listEntry value="/%NAME%"/> | ||||
|     </listAttribute> | ||||
|     <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"> | ||||
|         <listEntry value="4"/> | ||||
|     </listAttribute> | ||||
|     <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/> | ||||
|     <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.buildship.core.classpathprovider"/> | ||||
|     <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="%MAIN_CLASS%"/> | ||||
|     <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="%PROGRAM_ARGS%"/> | ||||
|     <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="%MODULE%"/> | ||||
|     <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="%VM_ARGS%"/> | ||||
| </launchConfiguration> | ||||
		Loading…
	
		Reference in a new issue