메신저 플러그인 개발에 익숙하며 한 가지 도움이 필요합니다.클래스를 Maven2 플러그인에 전달하십시오.
복잡한 객체를 메이븐 플러그인에 전달하는 것은 매우 쉽지만 클래스를 전달하는 것은 어떨까요? 메신저에 2 개의 클래스 만 포함 된 내 자신의 플러그인을 작성한다고 해보겠습니다.
Message.java
package abstractmessage;
public abstract class Message {
public abstract String getMessage();
}
MessageMojo.java
/**
* @goal message
*/
public class MessageMojo extends AbstractMojo {
/**
* @parameter expression="${message.messageClass}"
*/
private String messageClass ;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
Message message = null;
try {
Class<?> clazz = Class.forName(messageClass);
message = (Message) clazz.newInstance();
} catch (Exception e) {
getLog().error(e);
}
getLog().info(message.getMessage());
}
}
그래서 플러그인은 확장 된 메시지 클래스의 이름을 기대하고 초기화 dynamicaly하려고합니다.
실제 Maven-Project의 확장 Message 클래스는 다음과 같습니다.
package message;
import abstractmessage.Message;
public class RealMessage extends Message {
@Override
public String getMessage() {
return "Hello plugin. From MavenProject.";
}
}
그리고 pom.xml에는 플러그인이 사용됩니다. 내가 받는다는을 실행할 때
<build>
<plugins>
<plugin>
<artifactId>message-plugin</artifactId>
<groupId>message-plugin</groupId>
<version>1.0</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>message</goal>
</goals>
</execution>
</executions>
<configuration>
<messageClass>message.RealMessage</messageClass>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<artifactId>message-plugin</artifactId>
<groupId>message-plugin</groupId>
<version>1.0</version>
</dependency>
</dependencies>
는하지만 : 테스트 나는 왜 그렇게 java.lang.ClassNotFoundException: message.RealMessage
를 얻을?
클래스에 명시 적으로 사용하지 않으면 클래스 이름으로 해석해야하는 문자열이어야하며이를 수행 할 수있는 유일한 방법은 내 지식에 맞는 플러그인을 작성하는 것입니다. – Neil