This is an automated email from the ASF dual-hosted git repository.

nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit fc751759a8cb1bb0acf21dc0c1c9fda6826ec22a
Author: lburgazzoli <lburgazz...@gmail.com>
AuthorDate: Wed Sep 19 18:02:20 2018 +0200

    maven: remove build step, set updatePolicy
---
 Gopkg.lock                            |  1 -
 pkg/build/build_types.go              |  9 +++--
 pkg/build/local/local_builder.go      | 61 ++++++++++++++---------------
 pkg/build/local/local_builder_test.go | 20 +++++-----
 pkg/util/maven/maven.go               | 73 +++++++----------------------------
 pkg/util/maven/maven_test.go          | 62 +++++++++++++++++++++++++++++
 pkg/util/maven/types.go               | 41 ++++++++++++++++----
 7 files changed, 153 insertions(+), 114 deletions(-)

diff --git a/Gopkg.lock b/Gopkg.lock
index 2efc6d9..4c8e50f 100644
--- a/Gopkg.lock
+++ b/Gopkg.lock
@@ -742,7 +742,6 @@
     "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
     "k8s.io/apimachinery/pkg/runtime",
     "k8s.io/apimachinery/pkg/runtime/schema",
-    "k8s.io/apimachinery/pkg/runtime/serializer",
     "k8s.io/apimachinery/pkg/runtime/serializer/json",
     "k8s.io/apimachinery/pkg/runtime/serializer/versioning",
     "k8s.io/apimachinery/pkg/util/yaml",
diff --git a/pkg/build/build_types.go b/pkg/build/build_types.go
index da1ffed..a552aa1 100644
--- a/pkg/build/build_types.go
+++ b/pkg/build/build_types.go
@@ -39,10 +39,11 @@ type Source struct {
 
 // Result represents the result of a build
 type Result struct {
-       Source *Request
-       Status Status
-       Image  string
-       Error  error
+       Source               *Request
+       Status               Status
+       Image                string
+       Error                error
+       ResolvedDependencies []string
 }
 
 // Builder is supertype of all builders
diff --git a/pkg/build/local/local_builder.go b/pkg/build/local/local_builder.go
index c341274..65e035f 100644
--- a/pkg/build/local/local_builder.go
+++ b/pkg/build/local/local_builder.go
@@ -111,11 +111,11 @@ func (b *localBuilder) buildCycle(ctx context.Context) {
 }
 
 func (b *localBuilder) execute(source build.Request) (string, error) {
-       integration, err := generateIntegration(source)
+       project, err := generateProject(source)
        if err != nil {
                return "", err
        }
-       tarFileName, err := maven.Build(integration)
+       tarFileName, err := maven.Build(project)
        if err != nil {
                return "", err
        }
@@ -131,7 +131,6 @@ func (b *localBuilder) execute(source build.Request) 
(string, error) {
 }
 
 func (b *localBuilder) publish(tarFile string, source build.Request) (string, 
error) {
-
        bc := buildv1.BuildConfig{
                TypeMeta: metav1.TypeMeta{
                        APIVersion: buildv1.SchemeGroupVersion.String(),
@@ -254,44 +253,40 @@ func (b *localBuilder) publish(tarFile string, source 
build.Request) (string, er
        return is.Status.DockerImageRepository + ":" + 
source.Identifier.Qualifier, nil
 }
 
-func generateIntegration(source build.Request) (maven.Integration, error) {
-       integration := maven.Integration{
-               Project: maven.Project{
-                       XMLName:           xml.Name{Local: "project"},
-                       XMLNs:             "http://maven.apache.org/POM/4.0.0";,
-                       XMLNsXsi:          
"http://www.w3.org/2001/XMLSchema-instance";,
-                       XsiSchemaLocation: "http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";,
-                       ModelVersion:      "4.0.0",
-                       GroupID:           "org.apache.camel.k.integration",
-                       ArtifactID:        "camel-k-integration",
-                       Version:           version.Version,
-                       DependencyManagement: maven.DependencyManagement{
-                               Dependencies: maven.Dependencies{
-                                       Dependencies: []maven.Dependency{
-                                               {
-                                                       //TODO: camel version 
should be retrieved from an external source or provided as static version
-                                                       GroupID:    
"org.apache.camel",
-                                                       ArtifactID: "camel-bom",
-                                                       Version:    "2.22.1",
-                                                       Type:       "pom",
-                                                       Scope:      "import",
-                                               },
+func generateProject(source build.Request) (maven.Project, error) {
+       project := maven.Project{
+               XMLName:           xml.Name{Local: "project"},
+               XMLNs:             "http://maven.apache.org/POM/4.0.0";,
+               XMLNsXsi:          "http://www.w3.org/2001/XMLSchema-instance";,
+               XsiSchemaLocation: "http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";,
+               ModelVersion:      "4.0.0",
+               GroupID:           "org.apache.camel.k.integration",
+               ArtifactID:        "camel-k-integration",
+               Version:           version.Version,
+               DependencyManagement: maven.DependencyManagement{
+                       Dependencies: maven.Dependencies{
+                               Dependencies: []maven.Dependency{
+                                       {
+                                               //TODO: camel version should be 
retrieved from an external source or provided as static version
+                                               GroupID:    "org.apache.camel",
+                                               ArtifactID: "camel-bom",
+                                               Version:    "2.22.1",
+                                               Type:       "pom",
+                                               Scope:      "import",
                                        },
                                },
                        },
-                       Dependencies: maven.Dependencies{
-                               Dependencies: make([]maven.Dependency, 0),
-                       },
                },
-               Resources: make(map[string]string),
-               Env:       make(map[string]string),
+               Dependencies: maven.Dependencies{
+                       Dependencies: make([]maven.Dependency, 0),
+               },
        }
 
        //
        // set-up dependencies
        //
 
-       deps := &integration.Project.Dependencies
+       deps := &project.Dependencies
        deps.AddGAV("org.apache.camel.k", "camel-k-runtime-jvm", 
version.Version)
 
        for _, d := range source.Dependencies {
@@ -309,9 +304,9 @@ func generateIntegration(source build.Request) 
(maven.Integration, error) {
 
                        deps.AddEncodedGAV(gav)
                } else {
-                       return maven.Integration{}, fmt.Errorf("unknown 
dependency type: %s", d)
+                       return maven.Project{}, fmt.Errorf("unknown dependency 
type: %s", d)
                }
        }
 
-       return integration, nil
+       return project, nil
 }
diff --git a/pkg/build/local/local_builder_test.go 
b/pkg/build/local/local_builder_test.go
index c5fd33d..e6ec79b 100644
--- a/pkg/build/local/local_builder_test.go
+++ b/pkg/build/local/local_builder_test.go
@@ -43,17 +43,17 @@ func TestProjectGeneration(t *testing.T) {
                },
        }
 
-       prj, err := generateIntegration(source)
+       prj, err := generateProject(source)
        assert.Nil(t, err)
        assert.NotNil(t, prj)
-       assert.Equal(t, len(prj.Project.Dependencies.Dependencies), 5)
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[0].ArtifactID, 
"camel-k-runtime-jvm")
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[1].ArtifactID, 
"camel-mail")
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[2].ArtifactID, 
"camel-netty4")
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[3].ArtifactID, 
"camel-servicenow")
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[3].Version, 
"2.21.1")
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[4].ArtifactID, 
"camel-salesforce")
-       assert.Equal(t, prj.Project.Dependencies.Dependencies[4].Version, "")
+       assert.Equal(t, len(prj.Dependencies.Dependencies), 5)
+       assert.Equal(t, prj.Dependencies.Dependencies[0].ArtifactID, 
"camel-k-runtime-jvm")
+       assert.Equal(t, prj.Dependencies.Dependencies[1].ArtifactID, 
"camel-mail")
+       assert.Equal(t, prj.Dependencies.Dependencies[2].ArtifactID, 
"camel-netty4")
+       assert.Equal(t, prj.Dependencies.Dependencies[3].ArtifactID, 
"camel-servicenow")
+       assert.Equal(t, prj.Dependencies.Dependencies[3].Version, "2.21.1")
+       assert.Equal(t, prj.Dependencies.Dependencies[4].ArtifactID, 
"camel-salesforce")
+       assert.Equal(t, prj.Dependencies.Dependencies[4].Version, "")
 }
 
 func TestProjectGenerationWithFailure(t *testing.T) {
@@ -75,6 +75,6 @@ func TestProjectGenerationWithFailure(t *testing.T) {
                },
        }
 
-       _, err := generateIntegration(source)
+       _, err := generateProject(source)
        assert.NotNil(t, err)
 }
diff --git a/pkg/util/maven/maven.go b/pkg/util/maven/maven.go
index c54ebd2..1a919d2 100644
--- a/pkg/util/maven/maven.go
+++ b/pkg/util/maven/maven.go
@@ -39,14 +39,14 @@ const (
 )
 
 // Build takes a project description and returns a binary tar with the built 
artifacts
-func Build(integration Integration) (string, error) {
+func Build(project Project) (string, error) {
        buildDir, err := ioutil.TempDir("", buildDirPrefix)
        if err != nil {
                return "", errors.Wrap(err, "could not create temporary dir for 
maven source files")
        }
        defer os.RemoveAll(buildDir)
 
-       err = createMavenStructure(buildDir, integration)
+       err = createMavenStructure(buildDir, project)
        if err != nil {
                return "", errors.Wrap(err, "could not write maven source 
files")
        }
@@ -54,7 +54,7 @@ func Build(integration Integration) (string, error) {
        if err != nil {
                return "", err
        }
-       tarfile, err := createTar(buildDir, integration)
+       tarfile, err := createTar(buildDir, project)
        if err != nil {
                return "", err
        }
@@ -62,23 +62,16 @@ func Build(integration Integration) (string, error) {
 }
 
 func runMavenBuild(buildDir string) error {
-       mavenBuild := exec.Command("mvn", mavenExtraOptions(), "clean", 
"install", "-DskipTests")
-       mavenBuild.Dir = buildDir
-       mavenBuild.Stdout = os.Stdout
-       mavenBuild.Stderr = os.Stderr
-       logrus.Info("Starting maven build: mvn " + mavenExtraOptions() + " 
clean install -DskipTests")
-       err := mavenBuild.Run()
-       if err != nil {
-               return errors.Wrap(err, "failure while executing maven build")
-       }
+       copyDepsCmd := exec.Command("mvn", mavenExtraOptions(), "clean", 
"dependency:copy-dependencies")
+       copyDepsCmd.Dir = buildDir
+       copyDepsCmd.Stdout = os.Stdout
+       copyDepsCmd.Stderr = os.Stderr
 
-       mavenDep := exec.Command("mvn", mavenExtraOptions(), 
"dependency:copy-dependencies")
-       mavenDep.Dir = buildDir
-       logrus.Info("Copying maven dependencies: mvn " + mavenExtraOptions() + 
" dependency:copy-dependencies")
-       err = mavenDep.Run()
-       if err != nil {
+       logrus.Infof("Copying maven dependencies: mvn %v", copyDepsCmd.Args)
+       if err := copyDepsCmd.Run(); err != nil {
                return errors.Wrap(err, "failure while extracting maven 
dependencies")
        }
+
        logrus.Info("Maven build completed successfully")
        return nil
 }
@@ -90,13 +83,13 @@ func mavenExtraOptions() string {
        return "-Dcamel.noop=true"
 }
 
-func createTar(buildDir string, integration Integration) (string, error) {
+func createTar(buildDir string, project Project) (string, error) {
        artifactDir, err := ioutil.TempDir("", artifactDirPrefix)
        if err != nil {
                return "", errors.Wrap(err, "could not create temporary dir for 
maven artifacts")
        }
 
-       tarFileName := path.Join(artifactDir, 
integration.Project.ArtifactID+".tar")
+       tarFileName := path.Join(artifactDir, project.ArtifactID+".tar")
        tarFile, err := os.Create(tarFileName)
        if err != nil {
                return "", errors.Wrap(err, "cannot create tar file 
"+tarFileName)
@@ -104,22 +97,6 @@ func createTar(buildDir string, integration Integration) 
(string, error) {
        defer tarFile.Close()
 
        writer := tar.NewWriter(tarFile)
-       err = appendToTar(path.Join(buildDir, "target", 
integration.Project.ArtifactID+"-"+integration.Project.Version+".jar"), "", 
writer)
-       if err != nil {
-               return "", err
-       }
-
-       // Environment variables
-       if integration.Env != nil {
-               err = writeFile(buildDir, "run-env.sh", 
envFileContent(integration.Env))
-               if err != nil {
-                       return "", err
-               }
-               err = appendToTar(path.Join(buildDir, "run-env.sh"), "", writer)
-               if err != nil {
-                       return "", err
-               }
-       }
 
        dependenciesDir := path.Join(buildDir, "target", "dependency")
        dependencies, err := ioutil.ReadDir(dependenciesDir)
@@ -169,40 +146,20 @@ func appendToTar(filePath string, tarPath string, writer 
*tar.Writer) error {
        return nil
 }
 
-func createMavenStructure(buildDir string, project Integration) error {
-       pom, err := GeneratePomFileContent(project.Project)
+func createMavenStructure(buildDir string, project Project) error {
+       pom, err := GeneratePomFileContent(project)
        if err != nil {
                return err
        }
+
        err = writeFile(buildDir, "pom.xml", pom)
        if err != nil {
                return err
        }
-       err = writeFiles(path.Join(buildDir, "src", "main", "java"), 
project.JavaSources)
-       if err != nil {
-               return err
-       }
-       err = writeFiles(path.Join(buildDir, "src", "main", "resources"), 
project.Resources)
-       if err != nil {
-               return err
-       }
 
        return nil
 }
 
-func writeFiles(buildDir string, files map[string]string) error {
-       if files == nil {
-               return nil
-       }
-       for fileName, fileContent := range files {
-               err := writeFile(buildDir, fileName, fileContent)
-               if err != nil {
-                       return err
-               }
-       }
-       return nil
-}
-
 func writeFile(buildDir string, relativePath string, content string) error {
        filePath := path.Join(buildDir, relativePath)
        fileDir := path.Dir(filePath)
diff --git a/pkg/util/maven/maven_test.go b/pkg/util/maven/maven_test.go
index 05cff20..d21109c 100644
--- a/pkg/util/maven/maven_test.go
+++ b/pkg/util/maven/maven_test.go
@@ -48,6 +48,36 @@ const expectedPom = `<?xml version="1.0" encoding="UTF-8"?>
       <version>1.0.0</version>
     </dependency>
   </dependencies>
+  <repositories>
+    <repository>
+      <id>central</id>
+      <name></name>
+      <url>https://repo.maven.apache.org/maven2</url>
+      <snapshots>
+        <enabled>false</enabled>
+        <updatePolicy>never</updatePolicy>
+      </snapshots>
+      <releases>
+        <enabled>true</enabled>
+        <updatePolicy>never</updatePolicy>
+      </releases>
+    </repository>
+  </repositories>
+  <pluginRepositories>
+    <pluginRepository>
+      <id>central</id>
+      <name></name>
+      <url>https://repo.maven.apache.org/maven2</url>
+      <snapshots>
+        <enabled>false</enabled>
+        <updatePolicy>never</updatePolicy>
+      </snapshots>
+      <releases>
+        <enabled>true</enabled>
+        <updatePolicy>never</updatePolicy>
+      </releases>
+    </pluginRepository>
+  </pluginRepositories>
 </project>`
 
 func TestPomGeneration(t *testing.T) {
@@ -82,6 +112,38 @@ func TestPomGeneration(t *testing.T) {
                                },
                        },
                },
+               Repositories: Repositories{
+                       Repositories: []Repository{
+                               {
+                                       ID:  "central",
+                                       URL: 
"https://repo.maven.apache.org/maven2";,
+                                       Snapshots: Snapshots{
+                                               Enabled:      false,
+                                               UpdatePolicy: "never",
+                                       },
+                                       Releases: Releases{
+                                               Enabled:      true,
+                                               UpdatePolicy: "never",
+                                       },
+                               },
+                       },
+               },
+               PluginRepositories: PluginRepositories{
+                       Repositories: []Repository{
+                               {
+                                       ID:  "central",
+                                       URL: 
"https://repo.maven.apache.org/maven2";,
+                                       Snapshots: Snapshots{
+                                               Enabled:      false,
+                                               UpdatePolicy: "never",
+                                       },
+                                       Releases: Releases{
+                                               Enabled:      true,
+                                               UpdatePolicy: "never",
+                                       },
+                               },
+                       },
+               },
        }
 
        pom, err := GeneratePomFileContent(project)
diff --git a/pkg/util/maven/types.go b/pkg/util/maven/types.go
index db4b897..0a6e2b8 100644
--- a/pkg/util/maven/types.go
+++ b/pkg/util/maven/types.go
@@ -21,14 +21,6 @@ import (
        "encoding/xml"
 )
 
-// Integration --
-type Integration struct {
-       Project     Project
-       JavaSources map[string]string
-       Resources   map[string]string
-       Env         map[string]string // TODO: should we deprecate it ? env are 
set on deployment
-}
-
 // Project represent a maven project
 type Project struct {
        XMLName              xml.Name
@@ -41,6 +33,8 @@ type Project struct {
        Version              string               `xml:"version"`
        DependencyManagement DependencyManagement `xml:"dependencyManagement"`
        Dependencies         Dependencies         `xml:"dependencies"`
+       Repositories         Repositories         `xml:"repositories"`
+       PluginRepositories   PluginRepositories   `xml:"pluginRepositories"`
 }
 
 // DependencyManagement represent maven's dependency management block
@@ -91,3 +85,34 @@ func NewDependency(groupID string, artifactID string, 
version string) Dependency
                Classifier: "",
        }
 }
+
+// Repositories --
+type Repositories struct {
+       Repositories []Repository `xml:"repository"`
+}
+
+// PluginRepositories --
+type PluginRepositories struct {
+       Repositories []Repository `xml:"pluginRepository"`
+}
+
+// Repository --
+type Repository struct {
+       ID        string    `xml:"id"`
+       Name      string    `xml:"name"`
+       URL       string    `xml:"url"`
+       Snapshots Snapshots `xml:"snapshots"`
+       Releases  Releases  `xml:"releases"`
+}
+
+// Snapshots --
+type Snapshots struct {
+       Enabled      bool   `xml:"enabled"`
+       UpdatePolicy string `xml:"updatePolicy"`
+}
+
+// Releases --
+type Releases struct {
+       Enabled      bool   `xml:"enabled"`
+       UpdatePolicy string `xml:"updatePolicy"`
+}

Reply via email to