根据 maven-war-plugin FAQ ,
If you can't move the classes to another project, you can deploy the classes and resources included in your webapp as an "attached" artifact, with a classifier, by using the following configuration:
<project>
...
<artifactId>mywebapp</artifactId>
<version>1.0-SNAPSHOT</version>
...
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
This will result in two artifacts being deployed: mywebapp-1.0-SNAPSHOT.war and mywebapp-1.0-SNAPSHOT-classes.jar.
有什么方法可以让我得到 mywebapp-1.0-SNAPSHOT.jar 而不是 mywebapp-1.0-SNAPSHOT-classes.jar?
更新::
我希望同时生成 war 和 jar。虽然我可以通过应用 Changing packaging based on active profile in pom 中提到的配置文件来做到这一点.但我很想知道上述问题。
最佳答案
简短回答:不,你不能。
通过查看 maven-war-plugin 源代码,在 WarMojo.java 中(第292行),可以看到,简单的修改maven-war-plugin配置是不能满足你的要求的:
protected static File getTargetFile( File basedir, String finalName, String classifier, String type )
{
if ( classifier == null )
{
classifier = "";
}
else if ( classifier.trim().length() > 0 && !classifier.startsWith( "-" ) )
{
classifier = "-" + classifier;
}
return new File( basedir, finalName + classifier + "." + type );
}
由于 classesClassifier
参数默认为 "classes"
,您没有机会修改此行为:classifier
永远不会是 空
。
在文件生成后重命名该文件,或者修改 maven-war-plugin 的源代码,并将其用作自定义插件。
作为最后的考虑,不建议使用 null classesClassifier:它可能会产生误导。不过我不知道您的项目要求。
希望对您有所帮助。
关于java - 有没有办法将 mywebapp-1.0-SNAPSHOT-classes.jar 从 maven-war-plugin 中的 attachClasses 配置更改为 mywebapp-1.0-SNAPSHOT.jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17402543/