Java 如何在AWS设备场中运行maven命令

Java 如何在AWS设备场中运行maven命令,java,maven,aws-device-farm,Java,Maven,Aws Device Farm,我正在尝试使用maven在设备场中运行java mobile项目。 当我在本地计算机上的正确目录下运行此命令时,它会工作: mvn test -D "cucumber.options="src/test/java/cucumber/features" --glue cucumber.steps --tags @InstallApp" <directory>${project.basedir}/src/test/java/cucumber</directory>

我正在尝试使用maven在设备场中运行java mobile项目。 当我在本地计算机上的正确目录下运行此命令时,它会工作:

 mvn test -D "cucumber.options="src/test/java/cucumber/features" --glue 
cucumber.steps --tags @InstallApp"
<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
我将此命令放在aws设备场中的yaml文件上,但它不起作用。 这是我得到的错误:

        [DeviceFarm] echo "Start Appium TestNG test"
     Start Appium TestNG test
    [DeviceFarm] mvn test -D 
    "cucumber.options="src/test/java/cucumber/features" --glue 
cucumber.steps 
    --tags @InstallApp"
    [INFO] Scanning for projects...
    [INFO] BUILD FAILURE
    [ERROR] The goal you specified requires a project to execute but there 
     is 
     no POM in this directory (/tmp/scratchncneoU.scratch/test- 
 packageO6o8s7). 
  Please verify you invoked Maven from the correct directory. -> [Help 1]
<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
如何在设备场中运行此maven命令?pom位于哪里

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
谢谢

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
在yaml文件中键入此命令后: [DeviceFarm]java-Dappium.screenshots.dir=$DeviceFarm\u SCREENSHOT\u PATH-D“cucumber.options=”classpath:features”--glue cumber.steps--tags@InstallApp“org.testng.testng-testjar*-tests.jar-D$DeviceFarm\u LOG\u dir/测试输出-verbose 10

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
我得到一个错误:在jar文件中找不到testng.xml,尽管我的pom中有这个:

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
${project.basedir}/src/test/java/cumber

可能是什么?

由于部署包不包含整个项目,
mvn
命令失败。从当前部署包的情况来看,您应该能够使用以下命令执行您想要的操作:

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
-java-Dappium.screenshots.dir=$DEVICEFARM\u SCREENSHOT\u PATH-D“cucumber.options=”src/test/java/cucumber/features”--glue cucucucumber.steps
--tags@InstallApp“org.testng.testng-testjar*-tests.jar-d$DEVICEFARM\u LOG\u DIR/test output-verbose 10

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
否则,如果您想使用maven,您需要压缩整个项目并将其包含在
pom.xml
中。例如,使用

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
然后您应该能够在
testspec.yml
文件中使用maven。例如,我可以对示例运行以下命令:
mvn clean test
在转到project dir之后,为了获得结果,我必须导出目标目录

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  
  test:
    commands:
      # Your test package is downloaded in $DEVICEFARM_TEST_PACKAGE_PATH so we first change directory to that path.
      - echo "Navigate to test package directory"
      - cd $DEVICEFARM_TEST_PACKAGE_PATH/aws-device-farm-appium-cucumber-tests-for-sample-app
      - mvn clean test
...
artifacts:
  # By default, Device Farm will collect your artifacts from following directories
  - $DEVICEFARM_TEST_PACKAGE_PATH/aws-device-farm-appium-cucumber-tests-for-sample-app/target
  - $DEVICEFARM_LOG_DIR
但是,您需要将zip文件作为
APPIUM_节点
test类型上传,以避免在那里使用测试包解析器

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  

<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>  

-詹姆斯

这不是错误,应该是警告。你需要把它放进罐子里。请参阅这篇支持文章,它将对此有所帮助。我想我已经回答了这个问题,实际上在src/test/resources中放置testng.xml在我的例子中是不起作用的。不知道为什么,但有没有可能与我的pom中有这个相关:${project.basedir}/src/test/java/cumber是的,如果您使用一个test resources标记,那么它将覆盖super pom.xml中的默认路径,因此只需创建一个新的testResource标记并将其放入src/test/resources路径,那么您的意思是我应该创建另一个testResource并将其放入相同的testResources中?那么我将有2个testResource标签?这样,它们都将包含在罐子中?
<directory>${project.basedir}/src/test/java/cucumber</directory>
            </testResource>
        </testResources>