Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试将我的主/java类文件编译成.jar,然后生成.war_Java_Spring_Maven_Intellij Idea - Fatal编程技术网

尝试将我的主/java类文件编译成.jar,然后生成.war

尝试将我的主/java类文件编译成.jar,然后生成.war,java,spring,maven,intellij-idea,Java,Spring,Maven,Intellij Idea,我有一个使用IntelliJ构建的spring应用程序(MVC)。 我正在使用Maven 我的pom.xml文件当前在运行时生成war文件: mvn clean install pom.xml: <packaging>war</packaging> 我希望所有这些类都位于com.myapp.jar文件中 同样在maven安装过程中,我希望它在创建.war文件时将com.myapp.jar添加到/lib路径,以便我可以部署到tomcat/jetty 如果有人能准确地概

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

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

mvn clean install
pom.xml:

 <packaging>war</packaging>
我希望所有这些类都位于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>

org.apache.maven.plugins
maven编译器插件
2.3.2
${java版本}
${java版本}
org.apache.maven.plugins
maven战争插件
2.1.1
myapp
org.codehaus.mojo
TomcatMaven插件
1.1
org.mortbay.jetty
maven jetty插件
6.1.26
10
/

这不是很清楚,但是如果您想归档您的类并将这些类放在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>

org.apache.maven.plugins
maven战争插件
2.1.1
真的

您应该创建两个maven项目。第一个是jar,它只包含您想要在jar中使用的类,第二个是用于war的maven项目。在war项目中,jar项目应该作为依赖项添加

另外,如果您想安装war项目,同时生成jar文件(仅在一个命令行中),那么应该将war项目定义为父项目,将jar项目定义为模块。请参阅和标记
..
..


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

您需要使您的项目模块化,将您的src/main/java与pom捆绑在一起,并将其打包为jar,然后使用另一pom创建另一个web项目,并将此已创建的项目添加为模块。因此,您的家长pom应该有这样一个模块:

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

核心
此处解释:


我希望我的代码放在一个单独的.jar文件中,然后在.war文件中使用该.jar文件。这样,如果需要的话,我可以重用这个.jar文件。归档类创建一个编译过的类jar文件,并将jar复制到WEB-INF/lib目录。如果ArchiveClass未设置为true,则所有编译的类都将登录到WEB-INF/classes中。这就是您正在查看的内容,还是要创建一个包含源(.java)文件的jar文件?
<modules>
        <module>core</module>
</modules>