maven配置文件无法获取属性

blmhpbnm  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(392)

请告诉我有什么问题?
测试因以下错误而崩溃:failures:java.lang.nullpointerexception:entry:url=null中的null值
pom.xml文件:

<profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>2.21.0</version>
                    <configuration>
                        <systemPropertyVariables>
                            <db.url>https://dev.site.com/</db.url>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

basetest.java版本:

@BeforeClass (alwaysRun = true)
public void setUp() {

    Logger.getLogger("com.dataart.demo.java.logging.SomeClass").log(Level.INFO,System.getProperty("db.url"));

     if (System.getProperty("os.name").toLowerCase().contains("win")) {
         driverPath = "src/test/resources/chromedriver86.exe";
     }
     else {
         driverPath = "src/test/resources/chromedriverlinux86";
     }
    System.setProperty("webdriver.chrome.driver", driverPath);
    LoggingPreferences logs = new LoggingPreferences();
    logs.enable(LogType.BROWSER, Level.SEVERE);
    ChromeOptions options = new ChromeOptions();
    HashMap<String, Object> chromePref = new HashMap<>();
    chromePref.put("profile.default_content_settings.popups", 0);
    chromePref.put("download.default_directory", System.getProperty("user.dir"));
    options.setExperimentalOption("prefs", chromePref);
    options.addArguments("headless");
    options.addArguments("window-size=1800,1000");
    options.setCapability(CapabilityType.LOGGING_PREFS, logs);
    options.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.IGNORE);
    driver = new ChromeDriver(options);
    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(10L, SECONDS);
    driver.get(System.getProperty("db.url")); // line 71
}

失败:java.lang.nullpointerexception:条目中的null值:url=null
http://joxi.ru/d2pqdr9uj8pbla

eiee3dmh

eiee3dmh1#

从maven的Angular 来看,我认为您应该查看下面的片段(这是从前面的答案派生出来的):
surefire/failsafe配置进入 pluginManagement . 如果需要重写一个模块的systemproperty,可以这样做。如果需要,您还可以合并/替换父配置(请参阅此q/a:append或merge default maven plugin configuration)。
两者的配置都将注入一个系统属性 db.url 有价值的 ${test.db.url} 所述属性的值在配置文件内配置。
这旨在避免重复surefire/failsafe配置,特别是在 db.url 不是需要配置的单个属性。
您还可以使用maven resources插件从过滤后的文件中读取此内容(也可以避免使用全局共享上下文,例如: System.getProperty ). 我个人认为这是最好的(我更喜欢配置文件而不是系统属性,前者更容易共享)。

<project>
  <build>
    <pluginManagement>
      <plugins>
        <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>2.22.2</version> <configuration>
          <systemPropertyVariables>
            <db.url>${test.db.url}</db.url>
          </systemPropertyVariables>
        </configuration> </plugin> 
        <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.2</version> <configuration>
          <systemPropertyVariables>
            <db.url>${test.db.url}</db.url>
          </systemPropertyVariables>
        </configuration> </plugin>
      </plugins>
    </pluginManagement>
  </build>
  <profile>
    <id>dev</id>
    <activation> <activeByDefault>true</activeByDefault> </activation>
    <properties>
      <test.db.url>https://dev.site.com/</test.db.url>
    </properties>
  </profile>
</project>
xurqigkl

xurqigkl2#

如果您启动一个单独的测试,您的配置应该可以工作((ide内部)
但是考试会失败的,你呢 mvn install , mvn test , ...
失败:java.lang.nullpointerexception:条目中的null值:url=null
然后还应该配置 surefire-plugin ```

dev

true

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <systemPropertyVariables>
                    <db.url>https://dev.site.com/</db.url>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.2</version>
            <configuration>
                <systemPropertyVariables>
                    <db.url>https://dev.site.com/</db.url>
                </systemPropertyVariables>
            </configuration>
        </plugin>
    </plugins>
</build>

相关问题