Java 使用wildfly maven插件添加资源数据源

Java 使用wildfly maven插件添加资源数据源,java,maven,jakarta-ee,jboss,Java,Maven,Jakarta Ee,Jboss,在maven clean安装的第一次运行中,成功部署了驱动程序、数据源和应用程序。但在执行另一个maven clean安装时,日志会通知数据源已经注册 如何解决这个问题,我已经查阅了文档,但我没有考虑如何防止数据源的重新植入 POM.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h

在maven clean安装的第一次运行中,成功部署了驱动程序、数据源和应用程序。但在执行另一个maven clean安装时,日志会通知数据源已经注册

如何解决这个问题,我已经查阅了文档,但我没有考虑如何防止数据源的重新植入

POM.xml

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sistema</groupId>
  <artifactId>sgr</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <maven-compiler.version>3.3</maven-compiler.version>
    <maven-war-plugin.version>2.6</maven-war-plugin.version>
    <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
    <wildfly-maven-plugin.version>1.1.0.Beta1</wildfly-maven-plugin.version>
    <mysql-connector-java.version>5.1.39</mysql-connector-java.version>
    <flyway-maven-plugin.version>4.0.2</flyway-maven-plugin.version>
    <primefaces-version>6.0</primefaces-version>
  </properties>

  <dependencies>
    <!-- MySql Conector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-java.version}</version>
        <scope>provided</scope>
    </dependency>           
  </dependencies>

  <build>
    <sourceDirectory>../src/main/java</sourceDirectory>
    <finalName>sgr-${project.version}</finalName>

    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler.version}</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>${maven-war-plugin.version}</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <version>${wildfly-maven-plugin.version}</version>
        <executions>
            <!-- Add Driver JDBC MySql no servidor -->
            <execution>
                <id>deploy-driver</id>
                <phase>install</phase>
                <configuration>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql-connector-java.version}</version>
                    <name>mysql-connector-java-${mysql-connector-java.version}</name>
                    <driver-name>mysql-connector-java-${mysql-connector-java.version}</driver-name>
                </configuration>
                <goals>
                  <goal>deploy-artifact</goal>
                </goals>
            </execution>

            <!-- Add data source da aplicação no servidor -->
            <execution>
                <id>add-datasource</id>
                <phase>install</phase>
                <configuration>
                  <force>false</force>
                  <address>subsystem=datasources,data-source=SGRDS</address>
                  <resources>
                      <resource>
                          <properties>
                              <jndi-name>java:jboss/datasources/SGRDS</jndi-name>
                              <enable>true</enable>
                              <connection-url>jdbc:mysql://localhost/sgrdb?useSSL=false</connection-url>
                              <driver-name>mysql-connector-java-5.1.39_com.mysql.jdbc.Driver_5_1</driver-name>
                              <user-name>root</user-name>
                              <password>2cs2dlmf</password>
                          </properties>
                      </resource>
                  </resources>
                  <retryFailedDeploymentCount>1</retryFailedDeploymentCount>
                </configuration>
                <goals>
                    <goal>add-resource</goal>
                </goals>
            </execution>

            <!-- Realiza deploy no servidor e install da aplicação no repositório -->
            <execution>
              <id>deploy</id>
              <phase>install</phase>
              <goals>
                  <goal>deploy</goal>
              </goals>
            </execution>
        </executions>
      </plugin>              
    </plugins>
  </build>
</project>
新建Pom.xml和相同错误WFLYWELD0041:未启动WeldContainer

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.sistema</groupId>
  <artifactId>sgr</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>     

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <wildfly.version>10.1.0.Final</wildfly.version>
    <maven-compiler.version>3.3</maven-compiler.version>
    <maven-war-plugin.version>2.6</maven-war-plugin.version>
    <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
    <wildfly-maven-plugin.version>1.1.0.Beta1</wildfly-maven-plugin.version>
    <mysql-connector-java.version>5.1.39</mysql-connector-java.version>
    <flyway-maven-plugin.version>4.0.2</flyway-maven-plugin.version>
    <primefaces-version>6.0</primefaces-version>
  </properties>

  <dependencyManagement>
    <dependencies>         
        <dependency>
            <groupId>org.wildfly.bom</groupId>
            <artifactId>wildfly-javaee7-with-tools</artifactId>
            <version>${wildfly.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>

     <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-spec-api</artifactId>
        <version>${wildfly.version}</version>
        <type>pom</type>
        <scope>provided</scope>
     </dependency>

     <dependency>
       <groupId>javax.enterprise</groupId>
       <artifactId>cdi-api</artifactId>
       <scope>provided</scope>
    </dependency>   

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector-java.version}</version>
        <scope>provided</scope>
    </dependency>

    <dependency>  
        <groupId>org.primefaces</groupId>  
        <artifactId>primefaces</artifactId>  
        <version>${primefaces-version}</version>
    </dependency>
  </dependencies>

  <build>        
    <finalName>sgr-${project.version}</finalName>
    <resources>      
       <resource>
           <directory>src/main/resources</directory>
           <filtering>true</filtering>
       </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven-compiler.version}</version>
        <configuration>
          <source>${java.version}</source>
          <target>${java.version}</target>
        </configuration>
      </plugin>

      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>${maven-war-plugin.version}</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.wildfly.plugins</groupId>
        <artifactId>wildfly-maven-plugin</artifactId>
        <version>${wildfly-maven-plugin.version}</version>          
        <executions>
            <!-- Add Driver JDBC MySql no servidor -->
            <execution>
                <id>deploy-driver</id>
                <phase>install</phase>
                <configuration>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql-connector-java.version}</version>
                    <name>mysql-connector-java-${mysql-connector-java.version}</name>
                    <driver-name>mysql-connector-java-${mysql-connector-java.version}</driver-name>
                </configuration>
                <goals>
                  <goal>deploy-artifact</goal>
                </goals>
            </execution>

            <!-- Add data source da aplicação no servidor -->
            <execution>
                <id>add-datasource</id>
                <phase>install</phase>
                <configuration>
                  <force>false</force>
                  <address>subsystem=datasources,data-source=SGRDS</address>
                  <resources>
                      <resource>
                          <properties>
                              <jndi-name>java:jboss/datasources/SGRDS</jndi-name>
                              <enable>true</enable>
                              <connection-url>jdbc:mysql://localhost/sgrdb?useSSL=false</connection-url>
                              <driver-name>mysql-connector-java-5.1.39_com.mysql.jdbc.Driver_5_1</driver-name>
                              <user-name>root</user-name>
                              <password>2cs2dlmf</password>
                          </properties>
                      </resource>
                  </resources>
                  <retryFailedDeploymentCount>1</retryFailedDeploymentCount>
                </configuration>
                <goals>
                    <goal>add-resource</goal>
                </goals>
            </execution>
            <!-- Realiza deploy no servidor e install da aplicação no repositório -->
            <execution>
              <id>deploy</id>
              <phase>install</phase>
              <goals>
                  <goal>deploy</goal>
              </goals>
            </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-maven-plugin</artifactId>
        <version>${flyway-maven-plugin.version}</version>
        <configuration>
            <configFile>${project.build.directory}/classes/flyway.properties</configFile>
            <url>${flyway.url}</url>
            <user>${flyway.user}</user>
            <password>${flyway.password}</password>
            <schemas>
                <schema>${flyway.schemas}</schema>
            </schemas>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

我认为你应该使用:)

您的配置应如下所示:

    <!-- Add data source da aplicação no servidor -->
    <execution>
        <id>add-datasource</id>
        <phase>install</phase>
        <configuration>
          <force>true</force> <!-- or false, not sure -->
          ...
    </execution>

添加数据源
安装
真的
...

我不确定你是否必须把它设为真或假。文档上说应该将其设置为true,但这是默认值,也许可以尝试使用false。

Davide。德克桑多a força como verdadeiro ocorreu o mesmo erro,como falso a resentoum novo erro que inseri na minha pergunta.看来force=false解决了您最初的问题。这突出显示了您现在拥有的。CDI的配置可能有问题,您认为您可以将项目发布到某个地方(或生成错误的部分),以便查看它吗?Github会是理想的。Davide,我用我的新pom编辑了我的问题。在文档中,它没有通知将CDI与Wildfly一起使用的进一步配置,因此,由于这个错误,我对此表示怀疑,请根据会话18.1查看。我的项目Github乍一看,pom中的这一行似乎是错误的:
。/src/main/java
,我认为您不需要它。你确定生成战争是正确的吗?谢谢你,大卫,我要删除这条线并进行测试。战争是正常产生的。
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.461 s
[INFO] Finished at: 2016-12-12T20:45:05-02:00
[INFO] Final Memory: 19M/48M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.wildfly.plugins:wildfly-maven-plugin:1.1.0.Beta1:add-resource (add-datasource) on project sgr: Could not execute goal add-resource. Reason: Resource [
[ERROR] ("subsystem" => "datasources"),
[ERROR] ("data-source" => "SGRDS")
[ERROR] ] already exists.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    <!-- Add data source da aplicação no servidor -->
    <execution>
        <id>add-datasource</id>
        <phase>install</phase>
        <configuration>
          <force>true</force> <!-- or false, not sure -->
          ...
    </execution>