From b4bf930ad295ac0af80e7e77eb20670c201ae49c Mon Sep 17 00:00:00 2001
From: Guylaine Prat <guylaine.prat@c-s.fr>
Date: Tue, 5 Dec 2017 13:14:27 +0100
Subject: [PATCH] Update pom.xml and distribution philosophy (as done in
 Orekit)

---
 BUILDING.txt                                  |  21 +--
 NOTICE.txt                                    |   3 +
 README.txt                                    |  34 ++++
 pom.xml                                       | 152 +++++++++++++-----
 src/assembly/binary-assembly.xml              |  12 --
 src/assembly/building-files.xml               |  18 ---
 src/assembly/jar-files.xml                    |  11 --
 src/assembly/misc-files.xml                   |  10 --
 src/assembly/source-assembly.xml              |  12 --
 .../design}/dem-loading-class-diagram.puml    |   0
 .../direct-location-class-diagram.puml        |   0
 .../direct-location-sequence-diagram.puml     |   0
 ...hage-inner-recursion-activity-diagram.puml |   0
 .../duvenhage-top-loop-activity-diagram.puml  |   0
 .../design}/initialization-class-diagram.puml |   0
 .../initialization-sequence-diagram.puml      |   0
 .../inverse-location-sequence-diagram.puml    |   0
 {design => src/design}/mayon-volcano.png      | Bin
 .../design}/parametric-los-class-diagram.puml |   0
 .../assembly/source-distribution-assembly.xml |  25 +++
 src/main/assembly/source-jar-assembly.xml     |  24 +++
 .../OptimizationProblemBuilder.java           |   2 +-
 .../measurements/SensorToSensorMapping.java   |   2 +-
 23 files changed, 206 insertions(+), 120 deletions(-)
 create mode 100644 README.txt
 delete mode 100644 src/assembly/binary-assembly.xml
 delete mode 100644 src/assembly/building-files.xml
 delete mode 100644 src/assembly/jar-files.xml
 delete mode 100644 src/assembly/misc-files.xml
 delete mode 100644 src/assembly/source-assembly.xml
 rename {design => src/design}/dem-loading-class-diagram.puml (100%)
 rename {design => src/design}/direct-location-class-diagram.puml (100%)
 rename {design => src/design}/direct-location-sequence-diagram.puml (100%)
 rename {design => src/design}/duvenhage-inner-recursion-activity-diagram.puml (100%)
 rename {design => src/design}/duvenhage-top-loop-activity-diagram.puml (100%)
 rename {design => src/design}/initialization-class-diagram.puml (100%)
 rename {design => src/design}/initialization-sequence-diagram.puml (100%)
 rename {design => src/design}/inverse-location-sequence-diagram.puml (100%)
 rename {design => src/design}/mayon-volcano.png (100%)
 rename {design => src/design}/parametric-los-class-diagram.puml (100%)
 create mode 100644 src/main/assembly/source-distribution-assembly.xml
 create mode 100644 src/main/assembly/source-jar-assembly.xml

diff --git a/BUILDING.txt b/BUILDING.txt
index a7ed7280..cfd8dbbc 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -16,16 +16,11 @@ Building with Maven 3:
 Building with Eclipse:
  - Eclipse can be downloaded here:
        http://www.eclipse.org/downloads/
- - extract the rugged source jar in your eclipse workspace
- - create a new java project from existing sources and direct
-   Eclipse to the directory where you unpacked Rugged
- - set the source folders to rugged/src/main/java,
-   rugged/src/main/resources, rugged/src/test/java,
-   rugged/src/test/resources in
-   the source tab of the Configure Build Path dialog
- - set the external libraries to JRE system library (provided by Eclipse),
-   Junit 4.x (provided by Eclipse) orekit (available at Orekit website
-   https://www.orekit.org/) and Hipparchus (available at
-    Hipparchus project downloads page https://www.hipparchus.org/downloads.html)
-   in the libraries tab of the Configure Build Path dialog
-
+ - using your operating system tools, unpack the source distribution directly
+   inside your Eclipse workspace
+ - using Eclipse, import the project by selecting in the top level "File" menu
+   the entry "Import..."
+ - in the wizard that should appear, select "Maven -> Existing Maven Projects"
+ - select the folder you just created in your workspace by unpacking the
+   source distribution. The "pom.xml" file describing the project will be
+   automatically selected. Click finish
diff --git a/NOTICE.txt b/NOTICE.txt
index 42b7018b..434e2111 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -6,3 +6,6 @@ CS Systèmes d'Information (http://www.c-s.fr/)
 
 This product depends on software developed by
 The Apache Software Foundation (http://www.apache.org/)
+
+This product depends on software developed by
+The Hipparchus project (https://hipparchus.org/)
\ No newline at end of file
diff --git a/README.txt b/README.txt
new file mode 100644
index 00000000..ee17ceee
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,34 @@
+Rugged, a sensor-to-terrain mapping tool, is a free java library
+for geolocation and used for satellite imagery.
+
+It is licensed by CS Systèmes d'Information under the
+Apache License Version 2.0. A copy of this license is
+provided in the LICENSE.txt file.
+
+The BUILDING.txt file explains how the library can be built from sources.
+
+The src/main/java directory contains the library sources.
+The src/main/resources directory contains the library data.
+The src/test/java directory contains the tests sources.
+The src/test/resources directory contains the tests data.
+The src/tutorials/java directory contains sources for example use of the library.
+The src/design directory contains pieces for a UML model of the library.
+
+Rugged relies on the following free software, all released under
+business friendly free licenses.
+
+compile-time/run-time dependency:
+
+  - Orekit from CS Systèmes d'Information
+    https://www.orekit.org/
+    released under the Apache Software License, version 2
+
+  - Hipparchus from the Hipparchus project
+    https://hipparchus.org/
+    released under the Apache Software License, version 2
+
+test-time dependency:
+
+  - JUnit 4 from Erich Gamma and Kent Beck
+    http://www.junit.org/
+    released under the Common Public License Version 1.0
diff --git a/pom.xml b/pom.xml
index 4a691d39..1ac04bc9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,14 +35,13 @@
     <rugged.maven-project-info-reports-plugin.version>2.9</rugged.maven-project-info-reports-plugin.version>
     <rugged.maven-resources-plugin.version>3.0.2</rugged.maven-resources-plugin.version>
     <rugged.maven-site-plugin.version>3.6</rugged.maven-site-plugin.version>
-    <rugged.maven-source-plugin.version>3.0.1</rugged.maven-source-plugin.version>
     <rugged.maven-surefire-plugin.version>2.20</rugged.maven-surefire-plugin.version>
     <rugged.maven-surefire-report-plugin.version>2.20</rugged.maven-surefire-report-plugin.version>
     <rugged.jgit.buildnumber.version>1.2.10</rugged.jgit.buildnumber.version>
-    <!-- orekit.build-helper-maven-plugin.version>3.0.0</orekit.build-helper-maven-plugin.version-->
-    <!-- orekit.nexus-staging-maven-plugin.version>1.6.8</orekit.nexus-staging-maven-plugin.version-->
-    <!-- orekit.maven-gpg-plugin.version>1.6</orekit.maven-gpg-plugin.version-->
-    <!-- orekit.maven-install-plugin.version>2.5.2</orekit.maven-install-plugin.version-->
+    <rugged.build-helper-maven-plugin.version>3.0.0</rugged.build-helper-maven-plugin.version>
+    <rugged.nexus-staging-maven-plugin.version>1.6.8</rugged.nexus-staging-maven-plugin.version>
+    <rugged.maven-gpg-plugin.version>1.6</rugged.maven-gpg-plugin.version>
+    <rugged.maven-install-plugin.version>2.5.2</rugged.maven-install-plugin.version>
     <rugged.orekit.version>9.1</rugged.orekit.version>
     <rugged.hipparchus.version>1.2</rugged.hipparchus.version>
     <rugged.junit.version>4.12</rugged.junit.version>
@@ -253,8 +252,8 @@
         <version>${rugged.maven-assembly-plugin.version}</version>
         <configuration>
           <descriptors>
-            <descriptor>src/assembly/source-assembly.xml</descriptor>
-            <descriptor>src/assembly/binary-assembly.xml</descriptor>
+            <descriptor>src/main/assembly/source-distribution-assembly.xml</descriptor>
+            <descriptor>src/main/assembly/source-jar-assembly.xml</descriptor>
           </descriptors>
         </configuration>
         <executions>
@@ -388,7 +387,7 @@
         <version>${rugged.plantuml-maven-plugin.version}</version>
         <configuration>
           <sourceFiles>
-            <directory>${basedir}/design</directory>
+            <directory>${basedir}/src/design</directory>
             <includes>
               <include>
                 *.puml
@@ -461,35 +460,6 @@
         </configuration>
       </plugin>
     </plugins>
-    <pluginManagement>
-      <plugins>
-        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.apache.felix</groupId>
-                    <artifactId>maven-bundle-plugin</artifactId>
-                    <versionRange>[${rugged.maven-bundle-plugin.version},)</versionRange>
-                    <goals>
-                      <goal>manifest</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <ignore></ignore>
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
   </build>
 
   <reporting>
@@ -599,21 +569,119 @@
       <id>release</id>
       <build>
         <plugins>
-           <plugin>
+          <plugin>
             <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-source-plugin</artifactId>
-            <version>${rugged.maven-source-plugin.version}</version>
+            <artifactId>maven-javadoc-plugin</artifactId>
+            <version>${rugged.maven-javadoc-plugin.version}</version>
             <executions>
               <execution>
-                <id>create-source-jar</id>
+                <id>attach-javadocs</id>
                 <goals>
                   <goal>jar</goal>
                 </goals>
-                <phase>package</phase>
               </execution>
             </executions>
           </plugin>
+          <plugin>
+            <groupId>org.sonatype.plugins</groupId>
+            <artifactId>nexus-staging-maven-plugin</artifactId>
+            <version>${rugged.nexus-staging-maven-plugin.version}</version>
+            <extensions>true</extensions>
+            <configuration>
+              <serverId>ossrh</serverId>
+              <nexusUrl>https://oss.sonatype.org/</nexusUrl>
+              <autoReleaseAfterClose>false</autoReleaseAfterClose>
+            </configuration>
+          </plugin>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>build-helper-maven-plugin</artifactId>
+            <version>${rugged.build-helper-maven-plugin.version}</version>
+            <executions>
+              <execution>
+                <id>attach-artifacts</id>
+                <phase>verify</phase>
+                <goals>
+                  <goal>attach-artifact</goal>
+                </goals>
+                <configuration>
+                  <artifacts>
+                    <artifact>
+                      <file>${basedir}/target/rugged-${project.version}-sources.jar</file>
+                      <type>source-jar</type>
+                    </artifact>
+                  </artifacts>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-gpg-plugin</artifactId>
+            <version>${rugged.maven-gpg-plugin.version}</version>
+            <configuration>
+              <gpgArguments>
+                <arg>--digest-algo=SHA512</arg>
+              </gpgArguments>
+            </configuration>
+            <executions>
+              <execution>
+                <id>sign-artifacts</id>
+                <phase>verify</phase>
+                <goals>
+                  <goal>sign</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-install-plugin</artifactId>
+            <version>${rugged.maven-install-plugin.version}</version>
+            <configuration>
+              <createChecksum>true</createChecksum>
+            </configuration>
+          </plugin>
         </plugins>
+     </build>
+    </profile>
+    <profile>
+      <id>eclipse</id>
+      <activation>
+        <property>
+          <name>m2e.version</name>
+        </property>
+      </activation>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
+              <groupId>org.eclipse.m2e</groupId>
+              <artifactId>lifecycle-mapping</artifactId>
+              <version>1.0.0</version>
+              <configuration>
+                <lifecycleMappingMetadata>
+                  <pluginExecutions>
+                    <pluginExecution>
+                      <pluginExecutionFilter>
+                        <groupId>org.apache.felix</groupId>
+                        <artifactId>maven-bundle-plugin</artifactId>
+                        <versionRange>[${rugged.maven-bundle-plugin.version},)</versionRange>
+                        <goals>
+                          <goal>manifest</goal>
+                        </goals>
+                      </pluginExecutionFilter>
+                      <action>
+                        <ignore></ignore>
+                      </action>
+                     </pluginExecution>
+                  </pluginExecutions>
+                </lifecycleMappingMetadata>
+              </configuration>
+            </plugin>
+          </plugins>
+        </pluginManagement>
       </build>
     </profile>
   </profiles>
diff --git a/src/assembly/binary-assembly.xml b/src/assembly/binary-assembly.xml
deleted file mode 100644
index 63fddd2f..00000000
--- a/src/assembly/binary-assembly.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
-  <id>bin</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <componentDescriptors>
-    <componentDescriptor>src/assembly/misc-files.xml</componentDescriptor>
-    <componentDescriptor>src/assembly/jar-files.xml</componentDescriptor>
-  </componentDescriptors>
-</assembly>
\ No newline at end of file
diff --git a/src/assembly/building-files.xml b/src/assembly/building-files.xml
deleted file mode 100644
index 9eb2f438..00000000
--- a/src/assembly/building-files.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<component>
-  <fileSets>
-    <fileSet>
-      <includes>
-        <include>BUILDING.txt</include>
-        <include>pom.xml</include>
-        <include>checkstyle.xml</include>
-        <include>findbugs-exclude-filter.xml</include>
-        <include>license-header.txt</include>
-      </includes>
-      <useDefaultExcludes>true</useDefaultExcludes>
-    </fileSet>
-    <fileSet>
-      <directory>src</directory>
-      <useDefaultExcludes>true</useDefaultExcludes>
-    </fileSet>
-  </fileSets>
-</component>
\ No newline at end of file
diff --git a/src/assembly/jar-files.xml b/src/assembly/jar-files.xml
deleted file mode 100644
index e89c65b0..00000000
--- a/src/assembly/jar-files.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<component>
-  <fileSets>
-    <fileSet>
-      <directory>target</directory>
-      <outputDirectory></outputDirectory>
-      <includes>
-        <include>*.jar</include>
-      </includes>
-    </fileSet>
-  </fileSets>
-</component>
\ No newline at end of file
diff --git a/src/assembly/misc-files.xml b/src/assembly/misc-files.xml
deleted file mode 100644
index b6666a6c..00000000
--- a/src/assembly/misc-files.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component>
-  <fileSets>
-    <fileSet>
-      <includes>
-       <include>LICENSE.txt</include>
-       <include>NOTICE.txt</include>
-      </includes>
-    </fileSet>
-  </fileSets>
-</component>
diff --git a/src/assembly/source-assembly.xml b/src/assembly/source-assembly.xml
deleted file mode 100644
index d9dc8750..00000000
--- a/src/assembly/source-assembly.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
-  <id>sources</id>
-  <formats>
-    <format>zip</format>
-  </formats>
-  <componentDescriptors>
-    <componentDescriptor>src/assembly/misc-files.xml</componentDescriptor>
-    <componentDescriptor>src/assembly/building-files.xml</componentDescriptor>
-  </componentDescriptors>
-</assembly>
\ No newline at end of file
diff --git a/design/dem-loading-class-diagram.puml b/src/design/dem-loading-class-diagram.puml
similarity index 100%
rename from design/dem-loading-class-diagram.puml
rename to src/design/dem-loading-class-diagram.puml
diff --git a/design/direct-location-class-diagram.puml b/src/design/direct-location-class-diagram.puml
similarity index 100%
rename from design/direct-location-class-diagram.puml
rename to src/design/direct-location-class-diagram.puml
diff --git a/design/direct-location-sequence-diagram.puml b/src/design/direct-location-sequence-diagram.puml
similarity index 100%
rename from design/direct-location-sequence-diagram.puml
rename to src/design/direct-location-sequence-diagram.puml
diff --git a/design/duvenhage-inner-recursion-activity-diagram.puml b/src/design/duvenhage-inner-recursion-activity-diagram.puml
similarity index 100%
rename from design/duvenhage-inner-recursion-activity-diagram.puml
rename to src/design/duvenhage-inner-recursion-activity-diagram.puml
diff --git a/design/duvenhage-top-loop-activity-diagram.puml b/src/design/duvenhage-top-loop-activity-diagram.puml
similarity index 100%
rename from design/duvenhage-top-loop-activity-diagram.puml
rename to src/design/duvenhage-top-loop-activity-diagram.puml
diff --git a/design/initialization-class-diagram.puml b/src/design/initialization-class-diagram.puml
similarity index 100%
rename from design/initialization-class-diagram.puml
rename to src/design/initialization-class-diagram.puml
diff --git a/design/initialization-sequence-diagram.puml b/src/design/initialization-sequence-diagram.puml
similarity index 100%
rename from design/initialization-sequence-diagram.puml
rename to src/design/initialization-sequence-diagram.puml
diff --git a/design/inverse-location-sequence-diagram.puml b/src/design/inverse-location-sequence-diagram.puml
similarity index 100%
rename from design/inverse-location-sequence-diagram.puml
rename to src/design/inverse-location-sequence-diagram.puml
diff --git a/design/mayon-volcano.png b/src/design/mayon-volcano.png
similarity index 100%
rename from design/mayon-volcano.png
rename to src/design/mayon-volcano.png
diff --git a/design/parametric-los-class-diagram.puml b/src/design/parametric-los-class-diagram.puml
similarity index 100%
rename from design/parametric-los-class-diagram.puml
rename to src/design/parametric-los-class-diagram.puml
diff --git a/src/main/assembly/source-distribution-assembly.xml b/src/main/assembly/source-distribution-assembly.xml
new file mode 100644
index 00000000..91abe419
--- /dev/null
+++ b/src/main/assembly/source-distribution-assembly.xml
@@ -0,0 +1,25 @@
+<assembly>
+  <id>sources</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+  <fileSets>
+    <fileSet>
+      <includes>
+       <include>README.txt</include>
+       <include>LICENSE.txt</include>
+       <include>NOTICE.txt</include>
+       <include>BUILDING.txt</include>
+       <include>pom.xml</include>
+       <include>checkstyle.xml</include>
+       <include>findbugs-exclude-filter.xml</include>
+       <include>license-header.txt</include>
+      </includes>
+      <useDefaultExcludes>true</useDefaultExcludes>
+    </fileSet>
+    <fileSet>
+      <directory>src</directory>
+      <useDefaultExcludes>true</useDefaultExcludes>
+    </fileSet>
+  </fileSets>
+</assembly>
\ No newline at end of file
diff --git a/src/main/assembly/source-jar-assembly.xml b/src/main/assembly/source-jar-assembly.xml
new file mode 100644
index 00000000..b79e54ba
--- /dev/null
+++ b/src/main/assembly/source-jar-assembly.xml
@@ -0,0 +1,24 @@
+<assembly>
+  <id>sources</id>
+  <formats>
+    <format>jar</format>
+  </formats>
+  <includeBaseDirectory>false</includeBaseDirectory>
+  <fileSets>
+    <fileSet>
+      <includes>
+       <include>LICENSE.txt</include>
+       <include>NOTICE.txt</include>
+      </includes>
+      <outputDirectory>META-INF</outputDirectory>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/java</directory>
+      <outputDirectory>.</outputDirectory>
+      <includes>
+        <include>**/*.java</include>
+      </includes>
+      <useDefaultExcludes>true</useDefaultExcludes>
+    </fileSet>
+  </fileSets>
+</assembly>
diff --git a/src/main/java/org/orekit/rugged/adjustment/OptimizationProblemBuilder.java b/src/main/java/org/orekit/rugged/adjustment/OptimizationProblemBuilder.java
index cf4c7c9f..2c607efe 100644
--- a/src/main/java/org/orekit/rugged/adjustment/OptimizationProblemBuilder.java
+++ b/src/main/java/org/orekit/rugged/adjustment/OptimizationProblemBuilder.java
@@ -49,7 +49,7 @@ import org.orekit.utils.ParameterDriver;
  * @author Guylaine Prat
  * @since 2.0
  */
- abstract class OptimizationProblemBuilder {
+abstract class OptimizationProblemBuilder {
 
     /** Margin used in parameters estimation for the inverse location lines range. */
     protected static final int ESTIMATION_LINE_RANGE_MARGIN = 100;
diff --git a/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java b/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java
index 9bb1249f..cb87ba60 100644
--- a/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java
+++ b/src/main/java/org/orekit/rugged/adjustment/measurements/SensorToSensorMapping.java
@@ -208,7 +208,7 @@ public class SensorToSensorMapping {
      * @param pixelA sensor pixel A
      * @param pixelB sensor pixel B corresponding to the sensor pixel A (by direct then inverse location)
      * @param losDistance distance between the two lines of sight
-     * @param bodyDistance elevation to central body 
+     * @param bodyDistance elevation to central body
      */
     public void addMapping(final SensorPixel pixelA, final SensorPixel pixelB,
                            final Double losDistance, final Double bodyDistance) {
-- 
GitLab