Add option to isolate the tiny remapper instance between sub-projects. (#588)
This commit is contained in:
		
							parent
							
								
									03089cf6d7
								
							
						
					
					
						commit
						4fe19028cf
					
				
					 2 changed files with 21 additions and 1 deletions
				
			
		|  | @ -58,6 +58,12 @@ public abstract class AbstractRemapJarTask extends Jar { | |||
| 	@Input | ||||
| 	public abstract Property<String> getTargetNamespace(); | ||||
| 
 | ||||
| 	/** | ||||
| 	 * When enabled the TinyRemapperService will not be shared across sub projects. | ||||
| 	 */ | ||||
| 	@Input | ||||
| 	public abstract Property<Boolean> getRemapperIsolation(); | ||||
| 
 | ||||
| 	@Inject | ||||
| 	protected abstract WorkerExecutor getWorkerExecutor(); | ||||
| 
 | ||||
|  | @ -65,6 +71,7 @@ public abstract class AbstractRemapJarTask extends Jar { | |||
| 	public AbstractRemapJarTask() { | ||||
| 		getSourceNamespace().convention(MappingsNamespace.NAMED.toString()).finalizeValueOnRead(); | ||||
| 		getTargetNamespace().convention(MappingsNamespace.INTERMEDIARY.toString()).finalizeValueOnRead(); | ||||
| 		getRemapperIsolation().convention(false).finalizeValueOnRead(); | ||||
| 	} | ||||
| 
 | ||||
| 	public final <P extends AbstractRemapParams> void submitWork(Class<? extends AbstractRemapAction<P>> workAction, Action<P> action) { | ||||
|  |  | |||
|  | @ -33,6 +33,7 @@ import java.util.HashSet; | |||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Objects; | ||||
| import java.util.StringJoiner; | ||||
| 
 | ||||
| import org.gradle.api.Project; | ||||
| 
 | ||||
|  | @ -56,7 +57,19 @@ public class TinyRemapperService implements SharedService { | |||
| 		final boolean useKotlinExtension = project.getPluginManager().hasPlugin("org.jetbrains.kotlin.jvm"); | ||||
| 
 | ||||
| 		// Generates an id that is used to share the remapper across projects. This tasks in the remap jar task name to handle custom remap jar tasks separately. | ||||
| 		final String id = extension.getMappingsProvider().getBuildServiceName("remapJarService", from, to) + ":" + remapJarTask.getName() + (useKotlinExtension ? ":kotlin" : ""); | ||||
| 		final var joiner = new StringJoiner(":"); | ||||
| 		joiner.add(extension.getMappingsProvider().getBuildServiceName("remapJarService", from, to)); | ||||
| 		joiner.add(remapJarTask.getName()); | ||||
| 
 | ||||
| 		if (useKotlinExtension) { | ||||
| 			joiner.add("kotlin"); | ||||
| 		} | ||||
| 
 | ||||
| 		if (remapJarTask.getRemapperIsolation().get()) { | ||||
| 			joiner.add(project.getPath()); | ||||
| 		} | ||||
| 
 | ||||
| 		final String id = joiner.toString(); | ||||
| 
 | ||||
| 		TinyRemapperService service = sharedServiceManager.getOrCreateService(id, () -> { | ||||
| 			List<IMappingProvider> mappings = new ArrayList<>(); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue