Java 如何在maven构建之前运行类?
为什么以下情况会导致生成失败? 我创建了一个类,该类应该在maven开始执行构建之前运行Java 如何在maven构建之前运行类?,java,maven,Java,Maven,为什么以下情况会导致生成失败? 我创建了一个类,该类应该在maven开始执行构建之前运行 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.5.0</version>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>my.package.CustomClass</mainClass>
</configuration>
</plugin>
只需更改maven执行的阶段(如“测试”或“安装”),这样当插件运行类时,它将在类路径中可用。(如果您确实无法将其移动到另一个依赖项)
org.codehaus.mojo
execmaven插件
1.5.0
测试
JAVA
my.package.CustomClass
如果您是从一个干净的版本运行,那么您将没有该类的编译版本,因此无法运行该类。也许如果你多说一点你为什么要这样做,我们可以想出一些其他的办法。一个主类怎么可能在编译之前就被执行呢?也许您想将执行绑定到过程类
阶段?@Seelenvirtuose我需要一个公共静态void main
类在生成源
之前运行,以初始化外部wsdl服务的webservice身份验证的一些属性。@membersound那么这个类应该是另一个构建自己的工件。这个依赖项应该在插件配置的依赖项部分列出。因此,不可能在项目中只包含需要它的类??OP解释说,他需要在“生成源”阶段执行。此外,更适合的阶段是“流程类”。
java.lang.ClassNotFoundException: my.package.CustomClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:281)
at java.lang.Thread.run(Thread.java:745)
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>my.package.CustomClass</mainClass>
</configuration>
</plugin>