Пример проекта Java, который создает артефакты при сборке с teamcity - PullRequest
0 голосов
/ 10 октября 2018

Я не знаю java, но пытаюсь протестировать java-проект с teamcity для CI / CD, проблема, которую я не могу вызвать при сборке, чтобы создать artifacts, что критично для развертывания другой конфигурации сборки.

Так может ли кто-нибудь дать пример Java-проекта, который может создать artifacts при сборке с teamcity?

РЕДАКТИРОВАТЬ: подробности ниже:

дерево проекта:

    └───src
        └───main
            └───java
                └───com
                    └───mycompany
                        └──app

Последняя папка app содержит файл с именем App.java с содержимым, как показано ниже:

package com.mycompany.app;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );

        System.out.println("A NullPointerException is a drag...");
        Object myObject = null;
        /**
         * Checker prevents this from compiling...
         */
//        System.out.println("myObject: " + myObject.toString());
        /**
         * ... which is simply fantastic. It shows:
         *
         * error: [dereference.of.nullable] dereference of possibly-null
         * reference myObject
         *
         * http://checkerframework.org
         */
        System.out.println("... but thankfully, Checker has our back: http://checkerframework.org");
    }

Я пытаюсь создать hello мировой проект, скопированный из Интернета, я могу 'Проверить этот исходный код и как он работает.

pom.xml для сборки maven в одной папке с src:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>

  <properties>
      <!-- This property will be set by the Maven Dependency plugin -->
      <annotatedJdk>${org.checkerframework:jdk8:jar}</annotatedJdk>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker</artifactId>
        <version>1.9.4</version>
    </dependency>
    <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker-qual</artifactId>
        <version>1.9.4</version>
    </dependency>
    <dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>jdk8</artifactId>
        <version>1.9.4</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
      <execution>
        <goals>
          <goal>java</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <mainClass>com.mycompany.app.App</mainClass>
      <arguments>
        <argument>argument1</argument>
      </arguments>
    </configuration>
      </plugin>
      <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.1</version>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
        <configuration>
          <transformers>
        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
          <mainClass>com.mycompany.app.App</mainClass>
        </transformer>
          </transformers>
        </configuration>
      </execution>
    </executions>
      </plugin>
      <plugin>
          <!-- This plugin will set the properties values using dependency information -->
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.3</version>
          <executions>
              <execution>
                  <goals>
                      <goal>properties</goal>
                  </goals>
              </execution>
          </executions>
      </plugin>
      <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
              <source>1.8</source>
              <target>1.8</target>
              <fork>true</fork>
              <!-- Add all the checkers you want to enable here -->
              <annotationProcessors>
                  <annotationProcessor>org.checkerframework.checker.nullness.NullnessChecker</annotationProcessor>
              </annotationProcessors>
              <compilerArgs>
                  <!-- location of the annotated JDK, which comes from a Maven dependency -->
                  <arg>-Xbootclasspath/p:${annotatedJdk}</arg>
              </compilerArgs>
          </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Когда я добавляю этот проект на локальный сервер git,и отправьте его в teamcity (добавьте несколько пробелов в исходный код) для запуска сборки, build step из auto-detected функция конфигурации сборки maven шаг сборки (я выбрал maven при добавлении нового шага сборки)

РЕДАКТИРОВАТЬ 2: когда я запускаю команду build build на teamcity, сборка выполняется успешноessful, но artifacts скрыт, мне нужно после сборки этого проекта, он создает пакет .jar or .war в artifacts.

EDIT 3: с **/*.jar или без artifacts, запустить сборку didnНе создайте .jar артефактов, ниже приведена конфигурация: enter image description here

Спасибо за любую помощь.Я застрял на пару дней.

1 Ответ

0 голосов
/ 10 октября 2018

Вам нужно будет сообщить Team City, где находятся артефакты сборки.В конфигурации сборки есть поле (Arifact Paths) , которое будет принимать обозначения муравья.например, показать все файлы jar / war.

**/*.war
**/*.jar

При этом будет проверен весь проект на наличие файла war или jar.Обычно они помещаются в папку /target, которую maven использует для создания исходного кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...