mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 11:53:49 +07:00
JPS: apply path mapper to Maven Artifactory URLs
Now, if JPS runs in a WSL container, it mangles paths to JARs from `~\.m2`. JPS uses JARs from the Windows disk. Although it would be more performant to use JARs from the Linux drive, this commit makes JPS at least work on WSL. GitOrigin-RevId: 9c9d6dc378f03cc7e992b9fca8b639ccb709fd2b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
7159d220f2
commit
8d1744cd88
@@ -1,9 +1,11 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.jps.model.serialization;
|
||||
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public interface JpsPathMapper {
|
||||
@Contract("null->null; !null->!null")
|
||||
@Nullable String mapUrl(@Nullable String url);
|
||||
|
||||
JpsPathMapper IDENTITY = new JpsPathMapper() {
|
||||
|
||||
@@ -417,7 +417,8 @@ f:org.jetbrains.jps.model.serialization.java.compiler.RmicCompilerOptionsSeriali
|
||||
a:org.jetbrains.jps.model.serialization.library.JpsLibraryPropertiesSerializer
|
||||
- org.jetbrains.jps.model.serialization.JpsElementPropertiesSerializer
|
||||
- <init>(org.jetbrains.jps.model.library.JpsLibraryType,java.lang.String):V
|
||||
- a:loadProperties(org.jdom.Element):org.jetbrains.jps.model.JpsElement
|
||||
- loadProperties(org.jdom.Element):org.jetbrains.jps.model.JpsElement
|
||||
- loadProperties(org.jdom.Element,org.jetbrains.jps.model.serialization.JpsPathMapper):org.jetbrains.jps.model.JpsElement
|
||||
f:org.jetbrains.jps.model.serialization.library.JpsLibraryRootTypeSerializer
|
||||
- java.lang.Comparable
|
||||
- <init>(java.lang.String,org.jetbrains.jps.model.library.JpsOrderRootType,Z):V
|
||||
|
||||
@@ -23,6 +23,7 @@ import org.jetbrains.jps.model.module.JpsModuleReference;
|
||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
|
||||
import org.jetbrains.jps.model.serialization.JDomSerializationUtil;
|
||||
import org.jetbrains.jps.model.serialization.JpsModelSerializerExtension;
|
||||
import org.jetbrains.jps.model.serialization.JpsPathMapper;
|
||||
import org.jetbrains.jps.model.serialization.JpsProjectExtensionSerializer;
|
||||
import org.jetbrains.jps.model.serialization.artifact.JpsPackagingElementSerializer;
|
||||
import org.jetbrains.jps.model.serialization.java.compiler.*;
|
||||
@@ -327,12 +328,12 @@ public final class JpsJavaModelSerializerExtension extends JpsModelSerializerExt
|
||||
}
|
||||
|
||||
@Override
|
||||
public JpsSimpleElement<JpsMavenRepositoryLibraryDescriptor> loadProperties(@Nullable Element elem) {
|
||||
return JpsElementFactory.getInstance().createSimpleElement(loadDescriptor(elem));
|
||||
public JpsSimpleElement<JpsMavenRepositoryLibraryDescriptor> loadProperties(@Nullable Element elem, @NotNull JpsPathMapper pathMapper) {
|
||||
return JpsElementFactory.getInstance().createSimpleElement(loadDescriptor(elem, pathMapper));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static JpsMavenRepositoryLibraryDescriptor loadDescriptor(@Nullable Element elem) {
|
||||
private static JpsMavenRepositoryLibraryDescriptor loadDescriptor(@Nullable Element elem, @NotNull JpsPathMapper pathMapper) {
|
||||
if (elem == null) return new JpsMavenRepositoryLibraryDescriptor(null);
|
||||
String mavenId = elem.getAttributeValue(MAVEN_ID_ATTRIBUTE, (String)null);
|
||||
|
||||
@@ -343,14 +344,15 @@ public final class JpsJavaModelSerializerExtension extends JpsModelSerializerExt
|
||||
Element excludeTag = elem.getChild(EXCLUDE_TAG);
|
||||
List<Element> dependencyTags = excludeTag != null ? excludeTag.getChildren(DEPENDENCY_TAG) : Collections.emptyList();
|
||||
List<String> excludedDependencies = ContainerUtil.map(dependencyTags, it -> it.getAttributeValue(MAVEN_ID_ATTRIBUTE));
|
||||
var verificationProperties = loadArtifactsVerificationProperties(mavenId, elem.getChild(VERIFICATION_TAG));
|
||||
var verificationProperties = loadArtifactsVerificationProperties(mavenId, elem.getChild(VERIFICATION_TAG), pathMapper);
|
||||
return new JpsMavenRepositoryLibraryDescriptor(mavenId,
|
||||
includeTransitiveDependencies, excludedDependencies,
|
||||
verificationProperties,
|
||||
jarRepositoryId);
|
||||
}
|
||||
|
||||
private static List<ArtifactVerification> loadArtifactsVerificationProperties(@Nullable String mavenId, @Nullable Element element) {
|
||||
private static List<ArtifactVerification> loadArtifactsVerificationProperties(@Nullable String mavenId, @Nullable Element element,
|
||||
@NotNull JpsPathMapper pathMapper) {
|
||||
if (element == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
@@ -366,7 +368,7 @@ public final class JpsJavaModelSerializerExtension extends JpsModelSerializerExt
|
||||
if (sha256sum == null) {
|
||||
LOG.warn("Missing sha256sum attribute for verification artifact tag for descriptor maven-id=" + mavenId);
|
||||
} else {
|
||||
result.add(new ArtifactVerification(artifactUrl, sha256sum));
|
||||
result.add(new ArtifactVerification(pathMapper.mapUrl(artifactUrl), sha256sum));
|
||||
}
|
||||
} else {
|
||||
LOG.warn("Missing url attribute for verification artifact tag for descriptor maven-id=" + mavenId);
|
||||
|
||||
@@ -1,30 +1,28 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.jps.model.serialization.library;
|
||||
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.library.JpsLibraryType;
|
||||
import org.jetbrains.jps.model.serialization.JpsElementPropertiesSerializer;
|
||||
import org.jetbrains.jps.model.serialization.JpsPathMapper;
|
||||
|
||||
public abstract class JpsLibraryPropertiesSerializer<P extends JpsElement> extends JpsElementPropertiesSerializer<P, JpsLibraryType<P>> {
|
||||
public JpsLibraryPropertiesSerializer(JpsLibraryType<P> type, String typeId) {
|
||||
super(type, typeId);
|
||||
}
|
||||
|
||||
public abstract P loadProperties(@Nullable Element propertiesElement);
|
||||
/**
|
||||
* @deprecated Override {@link #loadProperties(Element, JpsPathMapper)} instead of this method.
|
||||
*/
|
||||
@Deprecated
|
||||
public P loadProperties(@Nullable Element propertiesElement) {
|
||||
throw new AbstractMethodError();
|
||||
};
|
||||
|
||||
public P loadProperties(@Nullable Element propertiesElement, @NotNull JpsPathMapper pathMapper) {
|
||||
return loadProperties(propertiesElement);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.jps.model.serialization.library;
|
||||
|
||||
import com.intellij.openapi.util.JDOMUtil;
|
||||
@@ -33,7 +33,7 @@ public final class JpsLibraryTableSerializer {
|
||||
private static final JpsLibraryPropertiesSerializer<JpsDummyElement> JAVA_LIBRARY_PROPERTIES_SERIALIZER =
|
||||
new JpsLibraryPropertiesSerializer<JpsDummyElement>(JpsJavaLibraryType.INSTANCE, null) {
|
||||
@Override
|
||||
public JpsDummyElement loadProperties(@Nullable Element propertiesElement) {
|
||||
public JpsDummyElement loadProperties(@Nullable Element propertiesElement, @NotNull JpsPathMapper pathMapper) {
|
||||
return JpsElementFactory.getInstance().createDummyElement();
|
||||
}
|
||||
};
|
||||
@@ -56,7 +56,7 @@ public final class JpsLibraryTableSerializer {
|
||||
public static JpsLibrary loadLibrary(Element libraryElement, String name, @NotNull JpsPathMapper pathMapper) {
|
||||
String typeId = libraryElement.getAttributeValue(TYPE_ATTRIBUTE);
|
||||
final JpsLibraryPropertiesSerializer<?> loader = getLibraryPropertiesSerializer(typeId);
|
||||
JpsLibrary library = createLibrary(name, loader, libraryElement.getChild(PROPERTIES_TAG));
|
||||
JpsLibrary library = createLibrary(name, loader, libraryElement.getChild(PROPERTIES_TAG), pathMapper);
|
||||
|
||||
MultiMap<JpsOrderRootType, String> jarDirectories = new MultiMap<>();
|
||||
MultiMap<JpsOrderRootType, String> recursiveJarDirectories = new MultiMap<>();
|
||||
@@ -92,8 +92,9 @@ public final class JpsLibraryTableSerializer {
|
||||
}
|
||||
|
||||
private static <P extends JpsElement> JpsLibrary createLibrary(String name, JpsLibraryPropertiesSerializer<P> loader,
|
||||
final Element propertiesElement) {
|
||||
return JpsElementFactory.getInstance().createLibrary(name, loader.getType(), loader.loadProperties(propertiesElement));
|
||||
final Element propertiesElement,
|
||||
@NotNull JpsPathMapper pathMapper) {
|
||||
return JpsElementFactory.getInstance().createLibrary(name, loader.getType(), loader.loadProperties(propertiesElement, pathMapper));
|
||||
}
|
||||
|
||||
private static JpsOrderRootType getRootType(String rootTypeId) {
|
||||
|
||||
Reference in New Issue
Block a user