Как я копирую файлы в существующий JAR с Муравьем?

Сначала вам нужно разобрать значения транспортного средства в отдельные массивы элементов опций JSX. Я предпочитаю делать это с помощью функции приведения ...

const vehicles = this.state.veh_data.reduce((acc, veh) => {
      let make = Object.keys(veh)[0],
          vehModels = veh[make];

      return {
            makes: [
                  ...acc.makes,
                  
            ],
            models:[
                  ...acc.models,
                  ...vehModels.map(model => {
                       return 
                  })
            ]  
       };
},{makes:[], models:[]});

Поскольку каждый элемент в вашем массиве veh_data является объектом, вам необходимо получить доступ к его первому (и единственному) свойству с помощью Object.keys (), чтобы получить все ключи объекта, а затем просто захватить первый (и единственный) ключ.

Доступ к модели можно получить, получив значение этого ключа в каждом объекте, над которым вы перебираете

...


      
      
      {vehicles.makes}
      

...


  
        
        {vehicles.models}
  

...

Учитывая контекст, я также не вижу необходимости хранить veh_data в состоянии компонента, что является пустой тратой ресурсов, если только эти данные не будут обновлять пользовательский интерфейс динамически, поэтому это будет полное решение .... [ 1113]

https://jsfiddle.net/mfpv1L6s/

(ПРИМЕЧАНИЕ: я понимаю, что это не даст вам полного решения, которое вы «должны» искать, как покажет варианты моделей для каждого транспортного средства, а не только модели, относящиеся к выбранной в настоящий момент марке, но это должно стать хорошей отправной точкой для вас.)

ДОПОЛНИТЕЛЬНЫЙ КРЕДИТ: Я бы также проанализировал этот вариант ценности представления чему-то более привлекательному, как это ...

keyToOption(key){
        return key.split('-')
                .map(word=> word.slice(0,1).toUpperCase + word.slice(1))
                .join(' ');
 }

Затем добавьте его в функцию приведения, как это ...

makes: [
    ...acc.makes,
    
],

Я включил вышеупомянутое в JSFiddle

(Полный рабочий пример ....)

import React, { Component } from "react";
import { Form, FormGroup, Input } from "reactstrap";
// import { veh_data } from '../shared/vehicle_make_and_models'
const veh_data = [
  { "alfa-romeo": ["145", "90", "Alfa 6", "Alfasud"] },
  { "aston-martin": ["15", "2-Litre", "AM Vantage", "Atom", "Cygnet", "DB2"] },
  { audi: ["100", "200", "A1", "A2", "A3", "A4", "A5", "A6", "A7"] }
];

const vehicles = parseVehicleList(veh_data)

class ImgAndForm extends Component { 
  state = { modelSelected: null };

  handleSearch(event) {
    alert("Search button clicked");
    event.preventDefault();
  }

  handleModelChange(event) {
    console.log(event.target.value);
    this.setState({ modelSelected: event.target.value });
  }

  render() {
    const selectedModels =
      this.state.modelSelected && this.state.modelSelected.length ? (
        vehicles.models[this.state.modelSelected]
      ) : (
        
      );

    return (
      

Search

this.handleModelChange(e)} type="select" name="select1" id="select1" > {vehicles.makes} {selectedModels}
); } } export default ImgAndForm; function parseVehicleList(data) { return data.reduce( (acc, veh, i) => { let make = Object.keys(veh)[0], vehModels = veh[make]; return { makes: [ ...acc.makes, ], models: { ...acc.models, [make]: vehModels.map((model, i) => { return ( ); }) } }; }, { makes: [], models: {} } ); } function keyToOption(key) { return key .split("-") .map(word => word.slice(0, 1).toUpperCase() + word.slice(1)) .join(" "); }

20
задан martin clayton 9 January 2011 в 14:23
поделиться

3 ответа

Задачи Ant Банки/Уха являются подзадачами более общего задача Zip. Это означает, что можно также использовать zipfileset в задаче Банки:

<jar destfile="${jar.file}" basedir="...">
    <zipfileset dir="${project.path}" includes="*.jar" prefix="libs"/>
</jar>

я также видел, что Вы определяете отдельный файл манифеста для включения в Банку. Можно также использовать вложенный manifest команда:

<jar destfile="@{destfile}" basedir="@{basedir}">
    <manifest>
        <attribute name="Built-By" value="..."/>
        <attribute name="Built-Date" value="..."/>

        <attribute name="Implementation-Title" value="..."/>
        <attribute name="Implementation-Version" value="..."/>
        <attribute name="Implementation-Vendor" value="..."/>
    </manifest>
</jar>
13
ответ дан 30 November 2019 в 00:14
поделиться
<jar update="true">
...
</jar>
18
ответ дан 30 November 2019 в 00:14
поделиться

Один путь состоит в том, чтобы использовать задачи Ant:

  1. Разархивировали - для взрыва, Банка является временной папкой
  2. Копия - для копирования папки, что Вы хотите к временной папке, и
  3. Банка - с набором 'обновления' к истинному, упаковать временную папку назад в исходный файл банки.

Муравей Руководство имеет примеры того, как сделать это.

4
ответ дан 30 November 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: