我使用Kamon和akka 2.4(包含遥控器)。
这意味着我需要包含一个-javaagent选项来按指定启动 by the Kamon doc
问题是我的Maven正在构建一个allinone jar:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>allinone</shadedClassifierName>
<artifactSet>
<includes>
<include>*:*</include>
</includes>
</artifactSet>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
<resource>reference.conf</resource>
</transformer>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<main-Class>my.main.Program</main-Class>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
如果我在IDE(Intellij)中运行东西,可以通过添加:
来正常工作-javaagent:完整\路径\到\ aspectjweaver-1.8.10.jar
或这些2到pom:
<dependency>
<groupId>io.kamon</groupId>
<artifactId>kamon-autoweave_2.11</artifactId>
<version>0.6.5</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
问题是,一旦我实际构建jar(mvn clean包),并且我使用(或不使用)-javaagent选项(java -javaagent ... -jar app.jar)运行它,编织不会发生,并且在IDE外部运行时不会报告任何指标。
我发现很难调试这个问题,因为即使使用
kamon.metric.disable-aspectj-weaver-missing-error = false
Kamon没有告诉我编织缺失。
我认为这是因为Java没有在路径中找到Weaver课程,但我知道我的结局。
有任何帮助吗?目标是通过编织
在外部运行jar答案 0 :(得分:1)
在旧用户组帖子here中找到答案:
您需要添加
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/aop.xml</resource>
</transformer>
给你的变形金刚。