我有使用Maven创建jar文件的要求,但是需要使用“
foobar”扩展名将它们安装到存储库中,如果它们可以具有自己的打包类型,那么这很好,以便我们可以通过打包来识别这些工件。
我可以设置新的包装类型吗?
要做到像你描述,创建包装Maven项目 罐子
(如说在这里,因为不会有魔力的定义)。在src / main / resources / META-INF /
plexus子文件夹中,创建具有以下内容的components.xml(假设您希望包装类型为“ my-custom-type”,如果您将其更改为“
foobar”希望)。
<component-set>
<components>
<component>
<role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
<role-hint>my-custom-type</role-hint>
<implementation>
org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
</implementation>
<configuration>
<phases>
<!--use the basic jar lifecycle bindings, add additional
executions in here if you want anything extra to be run-->
<process-resources>
org.apache.maven.plugins:maven-resources-plugin:resources
</process-resources>
<package>
org.apache.maven.plugins:maven-jar-plugin:jar
</package>
<install>
org.apache.maven.plugins:maven-install-plugin:install
</install>
<deploy>
org.apache.maven.plugins:maven-deploy-plugin:deploy
</deploy>
</phases>
</configuration>
</component>
<component>
<role>org.apache.maven.artifact.handler.ArtifactHandler</role>
<role-hint>my-custom-type</role-hint>
<implementation>
org.apache.maven.artifact.handler.DefaultArtifactHandler
</implementation>
<configuration>
<!--the extension used by Maven in the repository-->
<extension>foobar</extension>
<!--the type used when specifying dependencies etc.-->
<type>my-custom-type</type>
<!--the packaging used when declaring an implementation of
the packaging-->
<packaging>my-custom-type</packaging>
</configuration>
</component>
</components>
</component-set>
然后在要具有自定义包装的pom中,在包装元素中声明所需的类型,并确保您已指定插件,以便可以自定义包装。声明
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>name.seller.rich</groupId>
<artifactId>test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>my-custom-type</packaging>
<build>
<plugins>
<plugin>
<groupId>name.seller.rich.maven.plugins</groupId>
<artifactId>maven-foobar-plugin</artifactId>
<version>0.0.1</version>
<!--declare that this plugin contributes the component extensions-->
<extensions>true</extensions>
</plugin>
</plugins>
</build>
</project>
打包项目时,它将是一个扩展名为.jar的jar,但是,当安装/部署该项目时,Maven会将文件以components.xml中指定的扩展名“
.foobar”传送到存储库中。
我试图使用Maven将我的测试类打包到一个具有依赖关系的可执行jar中,但我很难做到这一点。 这是我的pom。迄今为止的xml: 当我执行mvn clean package时,构建会创建3个JAR: 可执行文件-tests-1.0。jar//由mvn包阶段构建 executable-tests-1.0-teststjar//由jar插件构建 cucumber试验。jar//通过shade插件构建
Java9的一个新特性是不推荐使用包装对象的构造函数。创建新包装对象的唯一方法是使用它们的静态方法。例如,对于整数对象,为-128和127之间的值实现缓存,并在每次调用时返回相同的引用。 正如类的API所说:“静态工厂值of(int)通常是一个更好的选择,因为它可能会产生更好的空间和时间性能。”JLS说:“给定相应的基元类型的值,通常不需要构造这些box类的新实例。构造的建议替代方法是自动装箱或静
我有一个如下所示的基类: 我想创建一个具有以下功能的只读包装类: 更确切地说,我希望类的所有字段都是只读的,但只有在调用之后,否则类就不能在构造函数本身中构造。我知道可以使用属性装饰器来完成,但我不想把所有属性都变成属性。
问题内容: 我正在将中型Java应用程序的构建从Ant迁移到Maven。我可以轻松迁移基本的构建内容,但是我也想从Maven构建中创建安装程序包。最简单的方法是通过Ant插件调用原始的Ant脚本,但我想也许我应该先看看Maven的支持。 我需要为不同的平台创建几个不同的安装程序: Windows 32/64位 Linux 32/64位 MacOS 32/64位 现在对于Linux,我认为我们只有一
问题内容: 我试图使用Maven将测试类打包到具有依赖项的可执行jar中,但是我正在努力做到这一点。 到目前为止,这是我的pom.xml: 当我执行构建时,将创建3个jar: execute-tests-1.0.jar //由mvn软件包阶段构建 execute-tests-1.0-teststjar //由jar插件构建 cumber-tests.jar //由shade-plugin构建 包含
问题内容: 我想创建我现有的swift类的类别,但是IDE中没有选择这样做的选项。 知道在快速项目中是否存在类别?还是如何在Swift项目中实现类似的功能? 问题答案: 在Swift中,您可以用来向现有的类,结构和枚举类型添加新功能。 它们在一些方面与Objective-C类别有所不同,主要是: 他们没有名字 您不需要显式导入扩展。如果定义扩展以将新功能添加到现有类型,则新功能将在该类型的所有现有