我想只编译源目录中选定的文件或目录(包括子目录).我敢肯定,我可以做到这一点使用<includes>的maven-compiler-plugin的配置,但似乎如我所料,因为它仍然编译所有的类到不行target/classes.真正奇怪的是,Maven输出表明该设置实际上是有效的,因为:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<includes>
<include>com/example/dao/bean/*.java</include>
</includes>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我有:
[INFO] Compiling 1 source file to c:\Projects\test\target\classes
Run Code Online (Sandbox Code Playgroud)
但是没有编译器的配置,我有:
[INFO] Compiling 14 source file to c:\Projects\test\target\classes
Run Code Online (Sandbox Code Playgroud)
然而,在这两种情况下,所有14个类都编译成target/classes我提到的.你能解释一下或建议另一个解决方案只编译选定的文件吗?
我无法找到激活某些Maven个人资料release:prepare和release:perform(两个)目标的解决方案.像这样的东西:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<arguments>-Pmy-release</arguments>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
只是不起作用.我知道这个releaseProfiles设置只适用于release:perform我,因为我只是arguments设置正是我想要的,但是my-profile在执行期间配置文件不活动.难道我做错了什么?
我有使用JBoss 5.1的Java EE 5项目和这样的问题.我必须使用由消息内容产生的字符串对MDB中的某些EJB执行某种运行时查找.它只是MDB中使用的一种服务定位器模式.现在,由于MDB在部署之后就开始消耗,因此我有很多,NameNotFoundException因为隐式部署顺序在这里不能很好地工作(运行时查找).你怎么看待这件事?是否有可能使用EJB 3.0做得很好?如果解决问题,我也可以使用任何特定于供应商的东西(JBoss 5.1).
一些代码片段可视化情况:
@MessageDriven(mappedName="jms/Queue")
public class MessageBean implements MessageListener {
@Resource
private MessageDrivenContext mdc;
public void onMessage(Message msg) {
final String beanName = // extract somehow the bean's name from 'msg'
final Context ctx = new InitialContext();
final Object obj = ctx.lookup(beanName); // NameNotFoundException
// do something with 'obj'
}
}
Run Code Online (Sandbox Code Playgroud)