El campo @Inject siempre es nulo [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Acceder a la dependencia inyectada en el constructor de beans administrados provoca NullPointerException 1 respuesta

Intento @inyectar un campo (es un módulo jar, beans.xml vacío existe en META-INF) de esta manera:

Interfaz IDataProvider

public interface IDataProvider {
  void test();
}

Implementación de DataProvider import javax.enterprise.context.ApplicationScoped;

@ApplicationScoped
public class DataProvider implements IDataProvider {
  private int i;

  public DataProvider() {
    i = 42;
  }

  @Override
  public void test() {

  }
}

Y la clase donde trato de inyectar el DataProvider

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;

@ApplicationScoped
public class DataController {

  @Inject
  private IDataProvider dataProvider;

  private int k;

  public DataController() {
     k = 42;
  }
}

Si ejecuto esto en Wildfly, el dataProvider inyectado siempre es nulo (punto de interrupción en el constructor DataController).

En cada tutorial se hace así, así que pensé que esto debería funcionar. La única diferencia es que ambas clases deben ser @ApplicationScoped

Estoy usando Wildfly 8.2Final, Gradle, IntelliJ. Mi gradle.build se ve así:

apply plugin: 'java'

repositories {
  mavenCentral()
  jcenter()
}

dependencies {
  compile group:'javax', name:'javaee-web-api', version:'7.+'
  compile group:'org.jboss.ejb3', name:'jboss-ejb3-ext-api', version:'2.+'
}

sourceSets {
  main {
      java {
          srcDir 'src/api/java'
          srcDir 'src/main/java'
      }
  }

  test {
      java {
          srcDir 'src/test/java'
      }
  }
}

jar {
  from ('./src') {
      include 'META-INF/beans.xml'
  }
}

¿Alguien tiene una idea de por qué esto no funciona? No recibo ningún error o excepción de Wildfly.

Respuestas a la pregunta(1)

Su respuesta a la pregunta