Skip to content

Not working with Nexus nor as proxy nor as hosted repos #17

@ngr-ilmarh

Description

@ngr-ilmarh

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

and tried to change
private void pomFromGemspec(PomFile file, boolean snapshot, DependencyData dependencyData) throws IOException {
with something like

    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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions