我认为这很简单,但有问题:
主要问题:
救援组件?
但我总是最终得到Project1-1.4.1-20120530.233546-2.war。这是一个更方便的地方,但名字仍然很奇怪。
Project2中的Jetty代码:
// Context
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
String jettyHome = System.getProperty( "jetty.home", ".." );
String fullWarName = ...; // Project1's WAR file. This path always changes
webapp.setWar( fullWarName );
// Server
Server server = new Server( kPort ); // TODO: get from config
server.setHandler(webapp);
server.start();
server.join();
其他考虑因素:
有没有更好的方法来重构这个项目?也许这不是“maven方式”?
答案 0 :(得分:1)
事实证明我不需要装配(我在内部提出的建议),而是在主要的pom中有更容易的东西。此外,将战争解压缩在这里是一个不错的主意。
在Project1的pom.xml顶部,我有:
<groupId>com.my.group</groupId>
<artifactId>project-one</artifactId>
<version>1.2.3-SNAPSHOT</version>
<packaging>war</packaging>
这接近Project2的pom.xml的底部
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-webapp</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.my.group</groupId>
<artifactId>project-one</artifactId>
<version>1.2.3-SNAPSHOT</version>
<type>war</type>
<overWrite>true</overWrite>
<outputDirectory>${project.build.directory}/webapps/project-one</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
然后在启动Jetty时我有:
webapp.setWar( "target/webapps/project-one" );
我仍然认为某些Jetty设置可能存在问题,但我认为这是正确的方向。