我们的项目有以下情况:
我正在寻找关于在工具和项目配置方面做到这一点的最佳方法的建议。
我们目前正在使用Ant,但我希望避免被蚂蚁埋没。有人用Maven做过这个吗?
我已经看过很多关于如何构建依赖于java应用程序的Web应用程序的帖子,但Web应用程序上没有任何内容取决于其他Web应用程序。
谢谢!
答案 0 :(得分:14)
听起来像Maven WAR overlay做你想要的。
答案 1 :(得分:3)
在Eclipse中,有一种“原生”WTP方法可以做到这一点。它主要使用链接文件夹和.settings / org.eclipse.wst.common.component文件中的一点点黑客。您可以在http://www.informit.com/articles/article.aspx?p=759232&seqNum=3“将Web模块划分为多个项目”一章中阅读有关它的文章。这个问题是链接文件夹必须相对于某些path variable可以在Window / Preferences / General / Workspace / Linked Resources选项卡中定义。否则,链接文件夹定义(可在项目根目录中的.project文件中找到)将包含工作站特定路径。实际上,路径变量应该是工作空间根。这个解决方案适用于WTP,部署和其他所有工作都应该如此。
第二个解决方案是使用ant。算了吧。你会深感遗憾的。
第三种解决方案是使用maven。如果你不做一些技巧,你可以忘记WTP出版的舒适度。像其他人建议的那样使用战争叠加。一定要安装m2eclipse,m2eclipse附加功能。最近发布了一个扩展插件,可以帮助您。在this blog描述。我没试过,但看起来还不错。无论如何Maven与链接文件夹无关,所以我认为即使是第一个解决方案,这个maven叠加层也可以在必要时共存。
对于无头构建,您可以使用HeadlessEclipse作为第一个解决方案。它已经死了(由我),但仍然有效:)。如果您使用maven overlay + eclipse的东西,无头构建由maven覆盖。
答案 2 :(得分:0)
这有点涉及,但在高层次我们这样做如下。我们将核心平台ui划分为基于功能的多个战争模块(login-ui,catalog-mgmt-ui等)。这些核心模块中的每一个都可以由面向客户的团队进行定制。
我们在构建时将所有这些模块合并为1个单一战争模块。合并规则基于maven的程序集插件。
答案 3 :(得分:0)
您通常从Java源代码开始。 WAR
不包含Java源代码,只包括WEB-INF/classes
下的JAR
或WEB-INF/libs
下的已编译类。
我要做的是使用Maven并用它开始一个全新的空webapp项目:http://maven.apache.org/guides/mini/guide-webapp.html
获得新的空项目结构后,将Java源代码复制到它(src/main/java
)并填写pom.xml
中的依赖项列表。
完成所有这些操作后,您可以使用mvn clean package
创建可以部署到Tomcat的标准WAR
文件。
答案 4 :(得分:0)
您可能希望设计具有基于接口的可插拔功能的核心应用程序。
例如,假设您的核心应用程序具有User
对象的一些概念,并且需要为基于用户的常见任务提供支持。创建UserStore
界面;
public interface UserStore
{
public User validateUser(String username, String password) throws InvalidUserException;
public User getUser(String username);
public void addUser(User user);
public void deleteUser(User user);
public void updateUser(User user);
public List<User> listUsers();
}
然后,您可以针对此界面编写核心应用程序(登录逻辑,注册逻辑等)。您可能希望在核心应用程序中提供此接口的默认实现,例如DatabaseUserStore
实际上是DAO。
然后将UserStore
定义为Spring bean并将其注入需要的地方;
<bean id="userStore" class="com.mycorp.auth.DatabaseUserStore">
<constructor-arg ref="usersDataSource"/>
</bean>
这允许您根据特定客户的需求自定义或扩展核心应用程序。如果客户想要将核心应用程序与其Active Directory服务器集成,则可以使用LDAP编写实现LDAPUserStore
接口的UserStore
类。将其配置为Spring bean并将自定义类打包为依赖jar。
您剩下的是每个人都使用的核心应用程序,以及一组客户特定的扩展程序,您可以单独提供和销售;哎呀,你甚至可以让客户写下自己的扩展名。