我使用Kamon与akka 2.4 (远程包括)。
这意味着我需要包括一个-javaagent选项,以作为指定的卡蒙博士启动。
问题是我的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:full\path\to\aspectjweaver-1.8.10.jar
或者这两个到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干净包),并使用(或不使用) -javaagent选项(java -javaagent.( -jar app.jar),在IDE外部运行时,不会发生织入,也不会报告任何度量。
我发现很难调试这个问题,因为即使在
kamon.metric.disable-aspectj-weaver-missing-error = false卡蒙没有告诉我编织不见了。
我相信这是因为Java没有在路径中找到Weaver类,但是我的智慧已经到了尽头。
有什么帮助吗?我们的目标是通过编织在外部运行这个罐子。
发布于 2017-04-26 14:54:21
在旧用户组post 这里中找到答案
你需要添加
<transformer implementation="org.apache.maven.plugins.shade.resource.XmlAppendingTransformer">
<resource>META-INF/aop.xml</resource>
</transformer>给你的变压器。
https://stackoverflow.com/questions/43586400
复制相似问题