Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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
Maven 我如何在IntelliJ IDEA上制作JAR和WAR?_Maven_Amazon Web Services_Intellij Idea_Aws Lambda - Fatal编程技术网

Maven 我如何在IntelliJ IDEA上制作JAR和WAR?

Maven 我如何在IntelliJ IDEA上制作JAR和WAR?,maven,amazon-web-services,intellij-idea,aws-lambda,Maven,Amazon Web Services,Intellij Idea,Aws Lambda,我想开发一个新的javawebservice,部署在AWS Lambda上,但我也希望能够轻松地测试它 我的想法是使用Jersey对我的webservice进行编码,并能够将其编译成war文件,因此我可以在本地对其进行测试,也能够将其编译成AWS的jar 我的第一个想法是在IntelliJ IDEA 2017.3 Ultimate上创建两个模块,一个用于war,另一个用于jar,都使用Maven,这两个模块共享Jersey REST资源(webservice类)的相同代码库。但不幸的是,我太新了

我想开发一个新的java
webservice
,部署在AWS Lambda上,但我也希望能够轻松地测试它

我的想法是使用
Jersey
对我的
webservice
进行编码,并能够将其编译成
war
文件,因此我可以在本地对其进行测试,也能够将其编译成AWS的
jar

我的第一个想法是在
IntelliJ IDEA 2017.3 Ultimate
上创建两个模块,一个用于
war
,另一个用于
jar
,都使用Maven,这两个模块共享
Jersey REST资源
webservice
类)的相同代码库。但不幸的是,我太新了,不能
IntelliJ IDEA
,我无法将其付诸实施


有没有办法做到这一点?

您提供的解决方案是可行的,但IMO有点过于复杂。我为我的项目做了类似的事情:首先我对所有的源代码和测试做了一个测试,然后我将它切片到。不过,这并不是最干净的解决方案——您可能会将依赖类放置到不同的工件上,并在运行时导致类加载问题

在您的情况下,它更简单-如果我做对了,您只需要将相同的内容重新打包到另一个工件。在最简单的情况下,一个模块就足够了。您只需添加一个用于组装WAR存档的插件,如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>jarwar</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>war</goal>
                        </goals>
                        <configuration>
                            <classifier>web</classifier>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

4.0.0
com.example
贾瓦尔
1.0-快照
罐子
org.apache.maven.plugins
maven战争插件
2.1.1
战争
网状物
上面的示例将编译源代码,在打包阶段从中组装jar和war档案,并附加它们以供进一步安装和部署。这里的主要思想是在编译所有源代码时,在打包阶段执行
maven-jar-plugin:jar
maven-war-plugin:war
目标。第一个目标绑定在
jar
defaultpackaging,第二个目标显式绑定


一个更重要的细节是分类器:应该在一个工件上指定它以将其标记为补充。否则,工件将无法正确安装到存储库。

So-您需要Maven或IDEA方面的帮助吗?Maven on IDEA,所以我猜主要是Maven。。。我会努力的!好啊我将阅读有关工件和目标的资料,然后我将尝试一下,非常感谢!您能否详细说明一下“您有可能将依赖类放置到不同的工件上,并在运行时导致类加载问题”?好的,只有当您将编译的类拆分到不同的工件上时(就像我在项目中所做的那样),这种风险才是实际存在的。在这种情况下,您可能会将类及其导入的类拆分为不同的归档,如果出于某种原因,稍后在运行时类路径中,只有带有类的归档,但没有其导入,您将遇到类加载问题。不管怎样,在你的情况下,这没什么好担心的。正如我从你的问题中了解到的,你只是在重新包装相同的内容,而不是将其切分。我想是的。。。谢谢