Skip to content

atom-starter must use compile maven scope when instrumenting atoms #141

@skapral

Description

@skapral

Subj.

Steps to reproduce.

  1. Create a Maven project, set-up atom-starter, following README.md.
  2. Add some provided dependencies
  3. Make some atoms using classes from provided dependencies.
  4. Try to build a project and face Atomizer failing on attempt to load classes from provided dependencies:
 █████╗ ████████╗ ██████╗ ███╗   ███╗██╗███████╗███████╗██████╗
██╔══██╗╚══██╔══╝██╔═══██╗████╗ ████║██║╚══███╔╝██╔════╝██╔══██╗
███████║   ██║   ██║   ██║██╔████╔██║██║  ███╔╝ █████╗  ██████╔╝
██╔══██║   ██║   ██║   ██║██║╚██╔╝██║██║ ███╔╝  ██╔══╝  ██╔══██╗
██║  ██║   ██║   ╚██████╔╝██║ ╚═╝ ██║██║███████╗███████╗██║  ██║
╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝     ╚═╝╚═╝╚══════╝╚══════╝╚═╝  ╚═╝

    MIT License             Copyright (c) 2017 Kapralov Sergey

java.home: /home/skapral/Software/jdk1.8.0_162/jre
java.class.path:
 /home/skapral/GitHub/reqresp/reqresp-core/target/atomize
 /home/skapral/GitHub/reqresp/reqresp-core/target/classes
 /home/skapral/GitHub/reqresp/reqresp-core/target/classes

oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type oo.atom.anno.Atom
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type oo.atom.anno.NotAtom
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.server.Server$StopTrigger
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.server.Server
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.response.RespExplicit
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.response.Response
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.enums.Method
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.bytes.Bytes
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.bytes.BString
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.handle.HRouted
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.handle.Handle
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.header.HdrExplicit
oo.atom.codegen.bytebuddy.plugin.AnnotateInterfacesPlugin: Transforming type com.github.skapral.reqresp.api.header.Header
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalStateException: Cannot resolve type description for org.mockserver.model.Header
	at oo.atom.codegen.stage.ByteBuddyStage.apply(ByteBuddyStage.java:82)
	at oo.atom.codegen.Instrumentation$Implementation.apply(Instrumentation.java:96)
	at oo.atom.codegen.AtomizerMain.main(AtomizerMain.java:116)
Caused by: java.lang.IllegalStateException: Cannot resolve type description for org.mockserver.model.Header
	at net.bytebuddy.pool.TypePool$Resolution$Illegal.resolve(TypePool.java:134)
	at net.bytebuddy.pool.TypePool$Default$LazyTypeDescription$TokenizedGenericType.toErasure(TypePool.java:5959)
	at net.bytebuddy.pool.TypePool$Default$LazyTypeDescription$GenericTypeToken$Resolution$Raw$RawAnnotatedType.of(TypePool.java:3625)
	at net.bytebuddy.pool.TypePool$Default$LazyTypeDescription$GenericTypeToken$Resolution$Raw.resolveReturnType(TypePool.java:3525)
	at net.bytebuddy.pool.TypePool$Default$LazyTypeDescription$LazyMethodDescription.getReturnType(TypePool.java:6474)
	at net.bytebuddy.description.method.MethodDescription$AbstractBase.asToken(MethodDescription.java:692)
	at net.bytebuddy.description.method.MethodDescription$AbstractBase.asToken(MethodDescription.java:334)
	at net.bytebuddy.description.method.MethodList$AbstractBase.asTokenList(MethodList.java:53)
	at net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default$1.represent(InstrumentedType.java:223)
	at net.bytebuddy.ByteBuddy.redefine(ByteBuddy.java:698)
	at oo.atom.codegen.stage.ByteBuddyStage.apply(ByteBuddyStage.java:74)
	... 2 more
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
	at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecutor.java:404)
	at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:166)
	at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:804)
	at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:751)
	at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:313)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
	at org.codehaus.classworlds.Launcher.main(Launcher.java:47)

Provided dependencies are not included to classpath, that's why instrumentation fails.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions