标签: shrinkwrap

JBoss ShrinkWrap.从其他模块添加文件.

多模块项目.

在此输入图像描述

在我的ejb模块中,我有突出显示的文件.我想在Web模块中使用运行arquillian测试的相同文件.

在web模块的pom.xml文件中,我依赖于ejb模块,但提供了范围,因为我不希望从ejb模块获取"真正的"persistence.xml.

<dependency>
        <groupId>com.comp</groupId>
        <artifactId>g4tc-ejb</artifactId>
        <type>ejb</type>
        <!-- Use scope provided as we are creating an ear file, and we do not want the packaged jar file in test, as we want the test-persistence.xml -->
        <scope>provided</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

所以在RestTest类中我想要包含ejb模块中的文件.

@Deployment
public static WebArchive getDeployment() {

    File[] files = Maven.resolver().loadPomFromFile("pom.xml")
            .importRuntimeAndTestDependencies().resolve().withTransitivity().asFile();

    WebArchive war = ShrinkWrap.create(WebArchive.class, "g4tcRestWebservice.war")
            .addAsLibraries(files)
            .addPackages(true, "com.comp.g4tc.web")
            .addPackages(true, "com.comp.g4tc.ejb") /* Load the classes from the ejb module instead of through dependency to avoid getting
                                                    the g4tc-ejb/src/java/resources/META-INF/persistence.xml, we want the one …
Run Code Online (Sandbox Code Playgroud)

jboss dependencies shrinkwrap

11
推荐指数
1
解决办法
377
查看次数

Arquillian:使用ShrinkWrap从现有战争中创建WebArchive

我正试图从Arquillian的另一个maven项目中部署现有的战争.我已经解决了战争并将其复制到我的Arquillian项目的目标目录中.

尝试在下面创建它:

@Deployment
public static WebArchive createDeployment() {

    return (WebArchive) ShrinkWrap.create(ZipImporter.class, "MyWarToTest.war").importFrom(
            new File("target/MyWarToTest.war"));

}
Run Code Online (Sandbox Code Playgroud)

但是,我得到了一个类强制转换异常.

引起:java.lang.ClassCastException:org.jboss.shrinkwrap.impl.base.importer.zip.ZipImporterImpl无法强制转换为org.jboss.shrinkwrap.api.Archive

我猜我应该尝试以不同的方式创造战争?

shrinkwrap jboss-arquillian

9
推荐指数
2
解决办法
8415
查看次数

如何在shrinkWrap中查看文件内容

创建ShrinkWrap后,我可以使用这行代码查看文件结构

System.out.println(webArchive.toString(true));
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能在shrinkWrap中看到特定文件的内容,例如我想在创建shrinkWrap后看到我的persistence.xml的内容.

是否有任何特定的代码片段来打印shrinkWrap中的文件内容?或者文件系统中是否有任何地方可以查找临时的shrinkWrap文件并浏览它的文件和内容

shrinkwrap jboss-arquillian

7
推荐指数
1
解决办法
3097
查看次数

如何通过将整个战争部署到WildFly嵌入式来设置arquillian来测试maven war项目?

我想在嵌入式WildFly实例上对我的战争进行宏(不是微!)黑盒测试.

我的maven项目看起来像这样

<project>
  ...
  <packaging>war</packaging>

  <!-- Lots of classes in src/main/webapp and files in src/main/webapp -->
  <dependencies>
    <!-- Lots of compile/runtime dependencies that change very frequently -->
    <!-- Lots of test dependencies that change very frequently -->
  </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

我的arquillian测试需要满足以下要求:

  • 在测试中将整个战争部署到app服务器.这包括所有生产类,所有运行时依赖项和所有src/main/webapp文件.从维护的角度来看,微型部署是不可能的,因为类依赖性和jar依赖性经常发生变化.所以我们不能枚举ShrinkWrap部署中的任何内容.
  • 不要对maven已知pom.xml的test或arquillian.xml 中的任何内容进行硬编码.这包括版本字符串,依赖项列表,包或类列表,应用服务器安装目录等.
  • 不要使用超过1个maven模块.我测试我的战争的测试属于产生战争的同一个maven模块的测试文件夹.
  • 签出我的代码的用户需要能够如此简单地运行测试:
    • 只需打开IntelliJ后,测试需要从IntelliJ运行pom.xml.
    • 使用WildFly嵌入式容器,因此不需要先安装任何东西,不需要先运行任何进程,绝对不需要设置JBOSS_HOME环境变量.
  • 我只对黑盒测试感兴趣,所以我的所有测试都可以作为客户端运行.

理论上,这可以用Arquillian的Maven解析器,嵌入式容器@RunAsClient,maven故障安全插件,一些arquillian.xml魔法和大量的maven魔法来实现.但实际上,我不能让这些东西一起工作,我也找不到任何适合这个场景的文档,所以我希望有人能清楚地展示它们如何协同工作.

shrinkwrap jboss-arquillian wildfly

7
推荐指数
1
解决办法
2589
查看次数

NPM-如何覆盖我的依赖项依赖项之一?

最近,npm发布了npm audit命令。当您npm i通知任何漏洞时,它将自动运行。我有一个简单的依赖树,如下所示:

package A
package B
  package B dependency
package C
Run Code Online (Sandbox Code Playgroud)

package.jsondependencies字段中包括A,B和C。B需要它自己的依赖关系,npm警告说它具有漏洞。我的问题是,如何覆盖该package B dependency版本以使用最新版本?我已经读过,这要么是工作,shrinkwrap.json要么是手动编辑,package-lock.json但是我找不到任何具体的示例来说明如何做。

确实看到Yarn支持中的resolutions字段package.json,但是我没有使用Yarn。有没有办法通过npm开箱即用来完成此任务?

dependencies shrinkwrap npm package.json package-lock.json

7
推荐指数
0
解决办法
2832
查看次数

使用shrinkwrap maven解析器解决依赖war文件

我正在设置arquillian测试.我想使用arquillian将JB部署到JBoss.这场战争被定义为我的pom.xml中的依赖:

    <dependency>
        <groupId>my.project</groupId>
        <artifactId>mywar</artifactId>
        <version>1.0</version>
        <type>war</type>
        <scope>runtime</scope>
    </dependency>   
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用shrinkwrap恢复此依赖关系时,它会抛出NoResolvedResultException:

PomEquippedResolveStage resolver = Maven.configureResolver().workOffline().loadPomFromFile("pom.xml");  
File war = resolver.resolve("my.project:mywar:war").withoutTransitivity().asSingleFile();
Run Code Online (Sandbox Code Playgroud)

似乎某种程度上解析器无法处理战争文件.我也经历过org.jboss.shrinkwrap.resolver.api.ResolveWithRangeSupportStage.resolveVersionRange(String),它似乎将坐标中的":war"解释为版本 - 这显然不起作用.

如果我提供版本,它的工作原理:

Maven.resolver().resolve("my.project:mywar:war:1.0").withoutTransitivity().asSingleFile();
Run Code Online (Sandbox Code Playgroud)

但我需要让它在没有版本的情况下工作,因为这会随着时间而改变,我不想在每个版本上调整版本.

有任何想法吗?

shrinkwrap jboss-arquillian

6
推荐指数
1
解决办法
1647
查看次数

如何将'main/src /.../ messages.properties'文件添加到ShrinkWrap WebArchive?

我在项目中有以下文件:

com/example/module/Messages.java
com/example/module/messages.properties
Run Code Online (Sandbox Code Playgroud)

ShrinkWrap.create(WebArchive.class, "test.war").addPackages(true, "com.example.module")仅使用添加Messages.java到生成的存档.我该如何添加messages.properties

谢谢.

编辑.

我现在正在使用,addAsResource但它只适用于文件test/resources夹下的文件.如何使其与下的文件一起使用main/src?那有没有maven配置?

目标是不重复文件.现在我有一个文件,下面main/src有一个副本test\resources.

java shrinkwrap jboss-arquillian

5
推荐指数
1
解决办法
4702
查看次数

如何从ShrinkWrap存档中删除我的测试类

如何从最终存档中过滤类?

public static JavaArchive unitTestJar() {
    return ShrinkWrap.create( JavaArchive.class )
            .addAsManifestResource( EmptyAsset.INSTANCE, "beans.xml" )
            .addPackages( false, getCorePackages() );
}

public static String[] getCorePackages( String... args ) {
    List<String> strings = Arrays.asList(
            "com.lm.util",
            "com.lm.infrastructure"
    );

    strings.addAll( Arrays.asList( args ) );
    return (String[]) strings.toArray();
}
Run Code Online (Sandbox Code Playgroud)

我看到有一个Filter API,但我似乎找不到任何如何使用它的例子.最终我想我会删除任何东西*Test*.这比尝试一次添加一个类更容易.

java shrinkwrap

5
推荐指数
1
解决办法
1803
查看次数

错误:找不到模块npm-shrinkwrap

用grunt设置bootstrap.收到以下错误:

找不到模块npm-shrinkwrap

尝试npm安装shrinkwrap,仍然得到相同的错误.

shrinkwrap node.js npm twitter-bootstrap gruntjs

5
推荐指数
1
解决办法
3036
查看次数

arquillian 从主文件夹添加资源

我在我们的 JAVA EE 应用服务器的业务代码中有问题。我们访问文件src/main/resources夹内的一些文件

  InputStream inputStream = Thread
                .currentThread()
                .getContextClassLoader()
                .getResourceAsStream(filePath);
Run Code Online (Sandbox Code Playgroud)

在生产中这是可行的,但我想测试在我的 arquillian 测试中使用此功能的一部分代码。

我们正在使用收缩包装来生成我们的test.war.

 WebArchive testArchive = ShrinkWrap.create(WebArchive.class, "test.war")
                .addPackages(true, "ch.microtronic.evending")
                .addAsWebInfResource("wildfly-ds.xml")
                .setWebXML(new File("src/main/webapp/WEB-INF/web.xml"))
                .addAsResource("test-persistence.xml", "META-INF/persistence.xml");
Run Code Online (Sandbox Code Playgroud)

我在将资源添加src/main/resourcestest.war.

我只能从src/test/resources.

我们的目录结构如下:

src
 |__main
 |   |__java
 |   |__resources
 |   |__webapp
 |   
 |__test
     |__java
     |__resources
Run Code Online (Sandbox Code Playgroud)

我必须做什么?

war shrinkwrap jboss-arquillian jakarta-ee

5
推荐指数
1
解决办法
3148
查看次数