-
Notifications
You must be signed in to change notification settings - Fork 3
Description
I'm trying to build jruby in isolated environment with no direct central and rubygems access.
Using settings.xml like this:
<settings>
<servers>
<server>
<id>mavengems</id>
<configuration>
<mirror>https://nexus.local.net/repository/rubygems</mirror>
</configuration>
</server>
</servers>
<mirrors>
<mirror>
<id>maven.proxy</id>
<url>https://nexus.local.net/repository/maven-proxy-group</url>
<mirrorOf>central,sonatype-nexus-snapshots,apache.snapshots,sonatype,ow2-snapshot,!mavengems,!https://rubygems.org</mirrorOf>
</mirror>
</mirrors>
</settings>
But Nexus don't provide rubygems v2 api, so mavengem ends up writing zipped gemspec in ~/.mavengem/https___nexus_local_net_repository_rubygems/api/v2/rubygems//versions/.json. And this causes exception (not very usefull):
...
Downloading from mavengems: mavengem:https://rubygems.org/rubygems/pattern-match/1.1.0/pattern-match-1.1.0.pom
[DEBUG] Writing tracking file /home/ilmar/.m2/repository/rubygems/pattern-match/1.1.0/pattern-match-1.1.0.pom.lastUpdated
[DEBUG] Using transporter WagonTransporter with priority -1.0 for https://nexus.local.net/repository/maven-proxy-group
[DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for https://nexus.local.net/repository/maven-proxy-group
Downloading from maven.proxy: https://nexus.local.net/repository/maven-proxy-group/rubygems/pattern-match/1.1.0/pattern-match-1.1.0.pom
[DEBUG] Writing tracking file /home/ilmar/.m2/repository/rubygems/pattern-match/1.1.0/pattern-match-1.1.0.pom.lastUpdated
[DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=419508, ConflictMarker.markTime=97065, ConflictMarker.nodeCount=158, ConflictIdSorter.graphTime=158085, ConflictIdSorter.topsortTime=68819, ConflictIdSorter.conflictIdCount=89, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=3790388, ConflictResolver.conflictItemCount=151, DefaultDependencyCollector.collectTime=106885526599, DefaultDependencyCollector.transformTime=4669911}
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:55 min
[INFO] Finished at: 2025-07-09T16:01:39+03:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal on project jruby-stdlib: Could not resolve dependencies for project org.jruby:jruby-stdlib:jar:9.4.10.1: Failed to collect dependencies at rubygems:rubygems-update:gem:3.3.26: Failed to read artifact descriptor for rubygems:rubygems-update:gem:3.3.26: Could not transfer artifact rubygems:rubygems-update:pom:3.3.26 from/to mavengems (mavengem:https://rubygems.org): org.jruby.exceptions.RaiseException: (ParserError) unexpected token at 'x�mTmkA��\�J��J��R�z��(�RۓJ_ �6w��%{�qw/i�)�����ٽKJ�
�
[ERROR] ��̳��dy���O����>� �\ɥ��˫�q��ax��ǛqkK��Y��yV�Sf18j�>F��jC��ຌ�q5{��u���AO��rP�D�VЈ[�. �
p
�,�
�`�>J
C�
[ERROR] �*=�����ê�}����\��~@�������8
[ERROR] ��b�r4���p�j��9�O�␦S��T4�m0sM_�m%7�MP�vV0.�DU�1cZɶE��j��]'<"8��\���
[ERROR]
����L5����n a�=ίB�*�vn����L0W:��a�/�3r͓�.��ޫ�@]y�SNU��N9����?P���c����[ɚ^�%
[ERROR] 8�h�����;t�t��<&�p�+����;�Z��C�4~��u*�ҟ[���0a���J`N"�����)$JZ�3hA
[ERROR] aX�� � ngk6gj:@�r�F��`F�NE0�*#m�)��akd�?�6�'9{����
i��&�GF�s�v�R��z�J zQwc�rjbq����.���K���<��Р��[x��Dp�*������=�Q�@���5���V���!Zjj\3Gԧ␦�˸1@�3M�s�KS
[ERROR] RkM�)NP�1I"�."8�Y�S���Ӄ��p�w2W*�Pn��D����z�����zC���y�sַ�_w�|�'
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project jruby-stdlib: Could not resolve dependencies for project org.jruby:jruby-stdlib:jar:9.4.10.1: Failed to collect dependencies at rubygems:rubygems-update:gem:3.3.26
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies (LifecycleDependencyResolver.java:269)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies (LifecycleDependencyResolver.java:147)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved (MojoExecutor.java:248)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:202)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.project.DependencyResolutionException: Could not resolve dependencies for project org.jruby:jruby-stdlib:jar:9.4.10.1: Failed to collect dependencies at rubygems:rubygems-update:gem:3.3.26
I've inserted catch with printStackTrace() in
mavengem/mavengem-protocol/src/main/java/org/torquebox/mojo/mavengem/Rubygems.java
Line 40 in 8ad40ad
| return this.files.get(path); |
mavengem/rubygems-tools/src/main/java/org/torquebox/mojo/rubygems/layout/GETLayout.java
Line 190 in 8ad40ad
| private void pomFromGemspec(PomFile file, boolean snapshot, DependencyData dependencyData) throws IOException { |
private void pomFromGemspec(PomFile file, boolean snapshot, DependencyData dependencyData) throws IOException {
GemspecFile gemspec = file.gemspec(dependencyData);
if (gemspec.notExists()) {
file.markAsNotExists();
} else {
try (InputStream is = store.getInputStream(gemspec)) {
try {
store.memory(gateway.newGemspecHelperFromV2GemInfo(is).pom(snapshot), file);
} catch (Exception e) {
store.memory(gateway.newGemspecHelper(is).pom(snapshot), file);
}
}
}
}
but apparently it's wrong. Anyway here is stacktrace from this and possible point of interest:
org.jruby.embed.InvokeFailedException: org.jruby.exceptions.RaiseException: (ParserError) unexpected token at '<zipped gemspec>'
at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.doInvokeMethod(EmbedRubyObjectAdapterImpl.java:251)
at org.jruby.embed.internal.EmbedRubyObjectAdapterImpl.callMethod(EmbedRubyObjectAdapterImpl.java:156)
at org.jruby.embed.ScriptingContainer.callMethod(ScriptingContainer.java:1448)
at org.torquebox.mojo.rubygems.DefaultRubygemsGateway.newGemspecHelperFromV2GemInfo(DefaultRubygemsGateway.java:92)
at org.torquebox.mojo.rubygems.layout.GETLayout.pomFromGemspec(GETLayout.java:197)
at org.torquebox.mojo.rubygems.layout.GETLayout.setPomPayload(GETLayout.java:184)
at org.torquebox.mojo.rubygems.layout.GETLayout.pom(GETLayout.java:243)
at org.torquebox.mojo.rubygems.cuba.maven.MavenReleasesRubygemsArtifactIdVersionCuba.on(MavenReleasesRubygemsArtifactIdVersionCuba.java:55)
at org.torquebox.mojo.rubygems.cuba.State.nested(State.java:63)
at org.torquebox.mojo.rubygems.cuba.maven.MavenReleasesRubygemsArtifactIdCuba.on(MavenReleasesRubygemsArtifactIdCuba.java:52)
at org.torquebox.mojo.rubygems.cuba.State.nested(State.java:63)
at org.torquebox.mojo.rubygems.cuba.maven.MavenReleasesRubygemsCuba.on(MavenReleasesRubygemsCuba.java:34)
at org.torquebox.mojo.rubygems.cuba.State.nested(State.java:63)
at org.torquebox.mojo.rubygems.cuba.maven.MavenReleasesCuba.on(MavenReleasesCuba.java:41)
at org.torquebox.mojo.rubygems.cuba.State.nested(State.java:63)
at org.torquebox.mojo.rubygems.cuba.maven.MavenCuba.on(MavenCuba.java:46)
at org.torquebox.mojo.rubygems.cuba.State.nested(State.java:63)
at org.torquebox.mojo.rubygems.cuba.RootCuba.on(RootCuba.java:81)
at org.torquebox.mojo.rubygems.cuba.State.nested(State.java:63)
at org.torquebox.mojo.rubygems.cuba.RubygemsFileSystem.visit(RubygemsFileSystem.java:86)
at org.torquebox.mojo.rubygems.cuba.RubygemsFileSystem.get(RubygemsFileSystem.java:57)
at org.torquebox.mojo.mavengem.Rubygems.get(Rubygems.java:44)
at org.torquebox.mojo.mavengem.MavenGemURLConnection.connect(MavenGemURLConnection.java:105)
at org.torquebox.mojo.mavengem.MavenGemURLConnection.connect(MavenGemURLConnection.java:101)
at org.torquebox.mojo.mavengem.MavenGemURLConnection.getInputStream(MavenGemURLConnection.java:81)
at org.torquebox.mojo.mavengem.wagon.MavenGemWagon.fillInputData(MavenGemWagon.java:50)
at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:126)
at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:567)
at org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:435)
at org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:412)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:457)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:364)
at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:644)
at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:262)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:499)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:401)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:229)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:207)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:240)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:171)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:541)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:526)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:413)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:365)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process(DefaultDependencyCollector.java:352)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:284)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:169)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.getDependencies(LifecycleDependencyResolver.java:243)
at org.apache.maven.lifecycle.internal.LifecycleDependencyResolver.resolveProjectDependencies(LifecycleDependencyResolver.java:147)
at org.apache.maven.lifecycle.internal.MojoExecutor.ensureDependenciesAreResolved(MojoExecutor.java:248)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:202)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: org.jruby.exceptions.RaiseException: (ParserError) unexpected token at '<zipped gemspec, not json>'
at json.ext.Parser.parse(json/ext/Parser.java:238)
at RUBY.parse(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/json/common.rb:216)
at RUBY.load(uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/json/common.rb:569)
at RUBY.json_load(uri:classloader:/nexus/rubygems_helper.rb:92)
at RUBY.rubygems_v2_info_gemspec(uri:classloader:/nexus/gemspec_helper_impl.rb:146)
at RUBY.initialize(uri:classloader:/nexus/gemspec_helper_impl.rb:57)
at org.jruby.RubyClass.new(org/jruby/RubyClass.java:917)
at RUBY.from_rubygems_v2_gem_info(uri:classloader:/nexus/gemspec_helper_impl.rb:76)
How to reproduce: simply create nexus container as stated here https://github.com/sonatype/docker-nexus/blob/main/README.md, then create rubygems proxy and try to build jruby through it.
@headius maybe you will come with quick triage, what if it's a configuration issue that i didn't get yet