我可以强制 Maven 构建一个 JAR,即使 POM 打包指定 WAR 吗?

Can I force Maven to build a JAR even though POM packaging specifies WAR?

我想从命令行将我们的项目构建为 JAR,而不修改具有 <packaging>war</packaging> 配置的 POM。

有办法吗?

如果您可以自由选择maven的执行方式,可以调用maven直接调用jar目标:

mvn jar:jar

我无法在阻止构建 war 的同时显式构建 jar。但我意识到我不必这样做。使用 maven-assembly-plugin 的这种配置,并且在我的 POM 中将包装设置为 WAR,将始终创建一个 fat-jar 和一个 war。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.5.3</version>
    <configuration>
        <finalName>myApp</finalName>
        <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>com.company.app.Startup</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

如果此问题/答案对搜索者来说令人困惑/无用,请随时将其删除。感谢所有帮助我来到这里的人。