maven-archetype
maven-archetype copied to clipboard
[ARCHETYPE-539] Maven archetype:generate hangs on retrieval of archetype-catalog.xml even on offline mode
Franz Allan Valencia See opened ARCHETYPE-539 and commented
Steps to reproduce
1.a Have slow connection
1.b.Alternatively, simulate slow connection with crapify
1.b.1. Install crapify - npm install crapify -g
1.b.2. Run crapify - crapify --port=5000 --speed=1 start
1.b.3. Configure ~/.m2/settings.xml to use crapify
<settings>
...
<proxies>
<proxy>
<id>crapify-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>localhost</host>
<port>5000</port>
</proxy>
</proxies>
...
</settings>
- Execute
$ mvn archetype:generate -DgroupId=com.example -DartifactId=example -Dversion=1.0-SNAPSHOT -o
Expected Behaviour:
The list of available archetypes would be shown to the user.
Note: I believe in older versions, only the basic archetypes are shown like quickstart
Actual Behaviour:
Maven command hangs in this last last line:
[DEBUG] Searching for remote catalog: https://repo.maven.apache.org/maven2/archetype-catalog.xml
Affects: 3.0.1
Attachments:
- build.log (20.48 kB)
2 votes, 4 watchers
Jesse Glick commented
This is particular painful when a Nexus mirror is configured; for some reason seems to be much slower, taking ~2m to generate one project from archetype.
I would think that if the GAV are all defined, then this should work offline; and if the GA are defined, and version is set to LATEST or RELEASE, then it should merely need to download maven-metadata.xml for that GA. The full catalog should only be necessary if you are running in interactive mode and browsing available archetypes.
Martijn Dashorst commented
Stack trace of the process hanging:
"main" #1 prio=5 os_prio=31 cpu=926.26ms elapsed=47.33s tid=0x000000013880ea00 nid=0x1f03 runnable [0x000000016d758000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.Net.connect0([email protected]/Native Method) at sun.nio.ch.Net.connect([email protected]/Net.java:579) at sun.nio.ch.Net.connect([email protected]/Net.java:568) at sun.nio.ch.NioSocketImpl.connect([email protected]/NioSocketImpl.java:588) at java.net.SocksSocketImpl.connect([email protected]/SocksSocketImpl.java:327) at java.net.Socket.connect([email protected]/Socket.java:633) at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368) at org.apache.maven.wagon.providers.http.httpclient.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) at org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute(RetryExec.java:89) at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) at org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:1005) at org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1162) at org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1140) 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.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.downloadCatalog(RemoteCatalogArchetypeDataSource.java:165) at org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.getArchetypeCatalog(RemoteCatalogArchetypeDataSource.java:129) at org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:197) at org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.getArchetypesByCatalog(DefaultArchetypeSelector.java:198) at org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.selectArchetype(DefaultArchetypeSelector.java:73) at org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:193) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:370) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:351) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:215) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:171) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:163) 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:294) 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:960) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293) at org.apache.maven.cli.MavenCli.main(MavenCli.java:196) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0([email protected]/Native Method) at jdk.internal.reflect.NativeMethodAccessorImpl.invoke([email protected]/NativeMethodAccessorImpl.java:77) at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke([email protected]/DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke([email protected]/Method.java:568) 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)