尝试使我的main / java类文件编译为.jar,然后生成.war

时间:2012-03-12 19:35:36

标签: java spring maven intellij-idea

我有一个使用IntelliJ构建的spring应用程序(MVC)。 我正在使用Maven。

当我运行时,我的pom.xml文件当前生成一个war文件:

mvn clean install

的pom.xml:

 <packaging>war</packaging>

现在我想尽可能避免创建两种不同的解决方案。

/ src / main / java中的所有代码都有一个包名:

com.myapp

我希望所有这些类都在com.myapp.jar文件中。

同样在maven安装过程中,我希望它在创建.war文件时将此com.myapp.jar添加到/ lib路径,以便我可以部署到tomcat / jetty。

有人可以准确地概述我必须做的事情,我很困惑如何同时做这两件事。

目前我的pom.xml的构建部分如下所示:

<build>
       <plugins>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-compiler-plugin</artifactId>
               <version>2.3.2</version>
               <configuration>
                   <source>${java-version}</source>
                   <target>${java-version}</target>
               </configuration>
           </plugin>
           <plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.1.1</version>
               <configuration>
                   <warName>myapp</warName>
               </configuration>
           </plugin>
           <plugin>
               <groupId>org.codehaus.mojo</groupId>
               <artifactId>tomcat-maven-plugin</artifactId>
               <version>1.1</version>
           </plugin>
           <plugin>
               <groupId>org.mortbay.jetty</groupId>
               <artifactId>maven-jetty-plugin</artifactId>
               <version>6.1.26</version>
               <configuration>
                   <scanIntervalSeconds>10</scanIntervalSeconds>
                   <contextPath>/</contextPath>

               </configuration>

           </plugin>
       </plugins>
   </build>

4 个答案:

答案 0 :(得分:1)

它不是很清楚,但是如果你想归档你的类并将这些类放在WAR文件的lib目录中。如果您正在查看以下插件,请执行以下操作:

 <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.1.1</version>
      <configuration>
          <archiveClasses>true</archiveClasses>
      </configuration>
 </plugin>

答案 1 :(得分:0)

你应该创建两个maven项目。一,对于罐子里只有你想要的罐子和战争的第二个maven项目。在war项目中,jar项目应该作为依赖项添加。

此外,如果要安装war项目并同时生成该jar文件(只在一个命令行中),则应将war项目定义为父项目,将jar项目定义为模块。请参阅doc和标记<parent>...</parent><modules>...</modules>

因此,父pom应该有一个模块标签,模块pom应该有一个父标签。当您在父项目(war one)上运行mvn install时,maven将自动首先运行该模块上的命令。另请参见此maven多项目doc

答案 2 :(得分:0)

您的需求是使您的项目模块化,将您的src / main / java与pom捆绑并将其打包为jar,然后使用另一个pom创建另一个Web项目并将此已创建的项目添加为模块。所以,你的父pom应该有这样一个模块:

<modules>
        <module>core</module>
</modules>

答案 3 :(得分:0)