多模块项目.
在我的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) 我正试图从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后,我可以使用这行代码查看文件结构
System.out.println(webArchive.toString(true));
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能在shrinkWrap中看到特定文件的内容,例如我想在创建shrinkWrap后看到我的persistence.xml的内容.
是否有任何特定的代码片段来打印shrinkWrap中的文件内容?或者文件系统中是否有任何地方可以查找临时的shrinkWrap文件并浏览它的文件和内容
我想在嵌入式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测试需要满足以下要求:
src/main/webapp
文件.从维护的角度来看,微型部署是不可能的,因为类依赖性和jar依赖性经常发生变化.所以我们不能枚举ShrinkWrap部署中的任何内容.pom.xml
的test或arquillian.xml 中的任何内容进行硬编码.这包括版本字符串,依赖项列表,包或类列表,应用服务器安装目录等.pom.xml
.JBOSS_HOME
环境变量.理论上,这可以用Arquillian的Maven解析器,嵌入式容器@RunAsClient
,maven故障安全插件,一些arquillian.xml
魔法和大量的maven魔法来实现.但实际上,我不能让这些东西一起工作,我也找不到任何适合这个场景的文档,所以我希望有人能清楚地展示它们如何协同工作.
最近,npm发布了npm audit命令。当您npm i
通知任何漏洞时,它将自动运行。我有一个简单的依赖树,如下所示:
package A
package B
package B dependency
package C
Run Code Online (Sandbox Code Playgroud)
我package.json
的dependencies
字段中包括A,B和C。B需要它自己的依赖关系,npm警告说它具有漏洞。我的问题是,如何覆盖该package B dependency
版本以使用最新版本?我已经读过,这要么是工作,shrinkwrap.json
要么是手动编辑,package-lock.json
但是我找不到任何具体的示例来说明如何做。
我确实看到Yarn支持中的resolutions
字段package.json
,但是我没有使用Yarn。有没有办法通过npm开箱即用来完成此任务?
我正在设置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)
但我需要让它在没有版本的情况下工作,因为这会随着时间而改变,我不想在每个版本上调整版本.
有任何想法吗?
我在项目中有以下文件:
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
.
如何从最终存档中过滤类?
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*
.这比尝试一次添加一个类更容易.
用grunt设置bootstrap.收到以下错误:
找不到模块npm-shrinkwrap
尝试npm安装shrinkwrap,仍然得到相同的错误.
我在我们的 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/resources
到test.war
.
我只能从src/test/resources
.
我们的目录结构如下:
src
|__main
| |__java
| |__resources
| |__webapp
|
|__test
|__java
|__resources
Run Code Online (Sandbox Code Playgroud)
我必须做什么?
shrinkwrap ×10
dependencies ×2
java ×2
npm ×2
gruntjs ×1
jakarta-ee ×1
jboss ×1
node.js ×1
package.json ×1
war ×1
wildfly ×1